안녕하세요 대전에서 직장생활하고 있는 초보개발자입니다.
지금 현재 다른분이 하시던 작업을 건내받아 텍스쳐 입히는 작업을 하려고 하고 있는데요...
제 생각처럼 잘 되지 않아서 이렇게 질문올려봅니다.
void __fastcall TForm1::SetTextureMap()
{
bitmap = new Graphics::TBitmap;
bitmap->LoadFromFile("c:\skin3.bmp");
GLubyte bits[64][64][4];
for(int i = 0 ; i < 64 ; i++ )
{
for(int j = 0 ; j < 64 ; j++)
{
bits[i][j][0]= (GLbyte)GetRValue(bitmap->Canvas->Pixels[i][j]);
bits[i][j][1]= (GLbyte)255;//GetGValue(bitmap->Canvas->Pixels[i][j]);
bits[i][j][2]= (GLbyte)255;//GetBValue(bitmap->Canvas->Pixels[i][j]);
bits[i][j][3]= (GLbyte)255;
// 테스트를 위하여 고정적인 수로 받아봄
}
}
glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
glGenTextures(1, &texture1);
glBindTexture(GL_TEXTURE_2D, texture1);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 64, 64, 0,GL_RGBA,GL_UNSIGNED_BYTE, bits);
}
이렇게 해서 일단 텍스쳐를 정의해 주고..
실제로 그려주는 부분에서는
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_TEXTURE_2D);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
glBindTexture(GL_TEXTURE_2D, texture1);
glBegin(GL_QUADS);
glTexCoord2f(0,0);glVertex3f(-1,-1, 0);
glTexCoord2f(0,1);glVertex3f(-1, 1, 0);
glTexCoord2f(1,1);glVertex3f( 1, 1, 0);
glTexCoord2f(1,0);glVertex3f( 1,-1, 0);
glEnd();
glFlush();
glDisable(GL_TEXTURE_2D);
이렇게 해서 그려주고 있습니다.
이미지를 가져오는데는 전혀 문제가 없고... 그림도 잘 그려는 주는데 왜인지 텍스쳐가
입혀지질 않네요.ㅠㅠ 이것때문에 오늘 하루종일 고민입니다.
고수여러분의 많은 도움바랍니다~