【发布时间】:2015-12-22 06:25:30
【问题描述】:
我在 OSX 10.10.5 上使用 Xcode 7.0,当我尝试在正方形上绘制纹理时得到一个非常奇怪的结果:
我要绘制的图像是:
我已经找了很长时间了,但没有找到类似的东西。这是我用来绘制纹理/四边形的代码:
TI = new SDL_Surface *[1];
TI[0] = IMG_Load ("media/dragonite.png");
texture = new GLuint[1];
glGenTextures (1,&texture[0]);
glBindTexture (GL_TEXTURE_2D,texture[0]);
glTexImage2D(GL_TEXTURE_2D,0,3,TI[0]->w,TI[0]->h,0,GL_BGR,GL_UNSIGNED_BYTE,TI[0]->pixels);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
SDL_FreeSurface (TI[0]);
delete[] TI;
glMatrixMode (GL_MODELVIEW);
glLoadIdentity ();
rtri = rquad = 0;
SDL_Event e;
while (true) {
if (SDL_PollEvent(&e)) {
if (e.type == SDL_QUIT)
break;
}
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(1, 1, 1);
glLoadIdentity();
glTranslatef(0, 0, SCREEN_ZOOM);
glRotatef(rquad, 3, 0.5, 1);
glBegin (GL_QUADS);
glTexCoord2f(0,0);glVertex3f (1,1,0);
glTexCoord2f(1,0);glVertex3f (-1,1,0);
glTexCoord2f(1,1);glVertex3f (-1,-1,0);
glTexCoord2f(0,1);glVertex3f (1,-1,0);
glEnd ();
//rquad -= 0.35;
SDL_GL_SwapWindow (w);
}
感谢任何帮助。谢谢。
【问题讨论】:
-
你试过在
glTexImage2D之前添加glPixelStorei(GL_UNPACK_ALIGNMENT, 1)吗? -
我刚试了一下,并没有修复它,但似乎确实有所改善,但我得到的结果与上面非常相似。
-
你确定SDL读取的数据是BGR格式的吗?我怀疑它是 BGRA 或 RGBA。
-
我不知道;我也不知道如何检查。我觉得奇怪的是你甚至无法分辨图像是什么,而且它似乎画了三遍,重叠。
-
查看
TI[0]->format->format
标签: c++ opengl graphics textures texture2d