안녕하세요. OpenGL을 사용하여 점 구름을하면서 3D 배열에 이미지 데이터를 넣는 데 문제가 있습니다. 점 구름을 사용하면서 이미지를 배열에 넣는 데 문제가 있습니다.
이
내 두 차원 배열 인 :float*** imgdata;
imgdata = new float**[576];
for(int a=0; a<576; a++)
{
*(imgdata + a) = new float*[352];
for(int b=0; b<352; b++)
*(*(imgdata + a) + b) = new float[1];
}
float*** texture;
texture = new float**[576];
for(int a=0; a<576; a++)
{
*(texture + a) = new float*[352];
for(int b=0; b<352; b++)
*(*(texture + a) + b) = new float[3];
}
내가 깊이지도 및
GBmp bm0;
GBmp bm1;
bm0.load("depth.bmp");
bm1.load("color.bmp");
가 지금은 두 이미지의 데이터를 입력하려고 컬러 이미지를로드 곳이다 루프 for 을 사용하여 3D 배열에 삽입하면 문제가있는 부분이됩니다.
for (int i=0; i<bm0.w; i++)
{
for (int j=0; j<bm0.h; j++)
{
for (int x=0; x<bm0.w; x++)
{
for (int y=0; y<bm0.h; y++)
{
texture[i][j][0] = bm1.rgb[x*3+y*bm0.w*3];
texture[i][j][1] = bm1.rgb[x*3+y*bm0.w*3+1];
texture[i][j][2] = bm1.rgb[x*3+y*bm0.w*3+2];
}
}
}
}
for (int i=0; i<bm0.w; i++)
{
for (int j=0; j<bm0.h; j++)
{
for (int x=0; x<bm0.w; x++)
{
for (int y=0; y<bm0.h; y++)
{
imgdata[i][j][0] = bm0.rgb[x+y*bm0.w];
}
}
}
}
디버깅을 시작할 때 오류가 발생하거나 처리되지 않은 예외가없는 빈 창이 표시되므로 무엇이 잘못되었는지 알 수 없습니다. 어떤 도움이나 조언을 주시면 감사하겠습니다.
코드의 나머지 절반은 다음과 같습니다. 저는이 두 배열 인 imgdata & 텍스처를 사용하여 3D 공간에 점을 그립니다.
glPointSize (1);
glBegin(GL_POINTS);
for (int i=0; i<bm0.w; i++)
{
for (int j=0; j<bm0.h; j++)
{
glColor3f(texture[i][j][0]/255, texture[i][j][1]/255, texture[i][j][2]/255);
x=imgdata[i][j][0];
y=imgdata[i][j][1];
z=imgdata[i][j][2];
glVertex3f(x,y,z);
}
}
glEnd();
glutSwapBuffers();
free(imgdata);
free(texture);
이'imgdata' 및'texture' 배열을 어떻게 사용하고 있습니까? OpenGL에 대해 언급 했으므로 OpenGL 함수에 인수로 사용하고 있습니까? 그렇다면 사용하는 곳에서 전화를 걸 수 있습니까? 아마 잘못된 것이 무엇인지 잘 알고 있지만 배열의 사용법을 알아야합니다. –
예. 정보 부족으로 죄송합니다. 질문을 업데이트했습니다. – SodaGuns
문제가 아니라고 생각했습니다. 나는 텍스쳐 데이터를'texture'라고 부르기 때문에 텍스쳐 데이터로 사용할 수도 있다고 생각했지만 그렇지 않습니다. 추가 정보를 추가해 주셔서 감사합니다. –