我试图在使用sdl创建的窗口上显示图像。
int main()
{
...
SDL_Surface *image = IMG_Load("hello.png");
while(!quit)
{
...
glClear(GL_COLOR_BUFFER_BIT)
GLuint texture;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexImage2D(GL_TEXTURE_2D, 0, 4, image->w, image->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, image->pixels);
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
glBegin( GL_QUADS );
glTexCoord2f(0.0f, 0.0f); glVertex3f(0.0f, 0.0f, 1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f(1.0f, 0.0f, 1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f(1.0f, 1.0f, 1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(0.0f, 1.0f, 1.0f);
glEnd();
}
}
问题是窗口以给定的清晰颜色显示,但图像未显示。
答案 0 :(得分:0)
我无法发表评论,因为我没有足够的分数,所以必须回答。
我无法看到你如何设置你的窗口,但你有一个1x1四边形,如果你的窗口设置的坐标宽度和高度为1.0,那么你很好,否则你将最终得到1像素的大小纹理(你的透明色的中间或角落有一个小点吗?这可能是你的纹理)。如果是,则将顶点坐标设置为窗口大小。
如果不是纹理尺寸,您是否尝试检查图像是否已正确加载?纹理2D有效吗? (检查错误)。
同样@keltar是正确的,你不应该在每个绘制周期创建纹理,你只需要加载一次。