여러 색상의 직사각형이 있는데 그 중 하나에 텍스처를 추가하려고합니다. 그러나 주어진 사각형에 텍스처를 적용하면 검정색으로 변합니다. 아래는 텍스처를로드하는 데 사용하는 함수입니다.C++ GL_QUAD에 텍스처를 추가하고 검은 색으로 표시됩니다.
GL_QUADS, 나는 다음이 그려 다른 함수에서GLuint GLWidget:: LoadTexture(const char * pic, int width, int height){
GLuint Texture;
BYTE * data;
FILE * picfile;
picfile = fopen(pic, "rb");
if (picfile == NULL)
return 0;
data = (BYTE *)malloc(width * height * 3);
fread(data, width * height, 3, picfile);
fclose(picfile);
glGenTextures(1, &Texture);
glBindTexture(GL_TEXTURE_2D, Texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, width, height, 0, GL_RGB8, GL_UNSIGNED_BYTE, data);
return Texture;
}
...
GLuint myTex = LoadTexture("texture.bmp", 500, 500);
glEnable(GL_TEXTURE_2D);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glBindTexture(GL_TEXTURE_2D, myTex);
glBegin(GL_QUADS);
glTexCoord2f(1, 1); glVertex3f(42, 10, 42);
glTexCoord2f(1, 0); glVertex3f(42, 10, -42);
glTexCoord2f(0, 0); glVertex3f(-42,10,-42);
glTexCoord2f(0, 1); glVertex3f(-42,10, 42);
glEnd();
나는, 덕분에 좋은 것 그 잘못 하겠어 어디 사람이 알려주 수 있다면!
제안 된 태그로 나왔습니다. Qt를 사용하는 것이 적절하다고 생각합니다. 그것은 또한 @derhass가 다른 방법으로는 사용하지 않았을 독특한 Qt 기능성을 사용하는 방향으로 나를 가리킬 수 있음을 의미했습니다. – user3151321