텍스처 매핑은 정말 쉬운 일이라고 생각합니다. 사실, 여러 번 구현했지만 이번에 실패하고 이유를 모르겠습니까? 그리고 텍스처를로드하는 경로가 옳다는 것을 보장 할 수 있습니다. 내 혼란에 대한 다른 이유? 여기 왜 앱에 텍스처를로드 할 수 없습니까?
내 코드입니다 :GLuint mytexture;
// two functions below come from NeHe's tut. I think it works well.
AUX_RGBImageRec *LoadBMP(CHAR *Filename)
{
FILE *File=NULL;
if (!Filename)
{
return NULL;
}
File=fopen(Filename,"r");
if (File)
{
fclose(File);
return auxDIBImageLoadA(Filename);
}
return NULL;
}
int LoadGLTextures()
{
int Status=FALSE;
AUX_RGBImageRec *TextureImage[1];
memset(TextureImage,0,sizeof(void *)*1);
if (TextureImage[0]=LoadBMP("NeHe.bmp"))
{
Status=TRUE;
glGenTextures(1, &mytexture);
glBindTexture(GL_TEXTURE_2D, mytexture);
glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, 0,
GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
}
if (TextureImage[0])
{
if (TextureImage[0]->data)
{
free(TextureImage[0]->data);
}
free(TextureImage[0]);
}
return Status;
}
//next is my Init() code:
bool DemoInit(void)
{
if (!LoadGLTextures())
{
return FALSE;
}
glEnable(GL_TEXTURE_2D);
........//other init is ok
}
bool DemoRender()
{
...///render other things
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, mytexture);
glColor3f(0,0,1);
glBegin(GL_QUADS);
glTexCoord2f(0, 0); glVertex2f(0, 0);
glTexCoord2f(1, 0); glVertex2f(200, 0);
glTexCoord2f(1, 1); glVertex2f(200, 200);
glTexCoord2f(0, 1); glVertex2f(0, 200);
glEnd();
glDisable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, 0);
}
꽤 명확 하? 그러나 최종 결과에는 텍스처가없는 파란색 직사각형 만 있습니다. 아무도 나에게 힌트를 줄 수 없어?
부정확 한 점을 지적하지 않습니다. 초기화 후 glGetError를 시도 했습니까? 렌더링 루프가 끝날 때마다 시도 했습니까? – Tim
GLAUX 사용을 중단하십시오. 실제 [이미지로드 라이브러리]를 사용하십시오. (http://www.opengl.org/wiki/Image_Libraries) –
Tim : 예 glGetError를 사용하고 그 결과는 0입니다. 그런데, 텍스처 대신에 직접 TextureImage [0]와 glDrawPixels입니다. 나는 그 그림을 특정한 각도로 볼 수있다. 어쩌면로드 프로세스가 양호하다는 것을 증명할 수 있습니다. 하지만 나는 감촉이 필요하다고 생각합니다. – TonyLic