我对OpenGL相对比较陌生,当我将图像渲染为与图像大小相同的QUAD纹理时,出现了一些问题。这是我的代码。如果有人帮我解决这个问题,我将非常感激。图像显得更小并且被挤压。 (顺便说一句,图像尺寸是500x375)。OpenGL 2D纹理映射问题
glGenTextures(1, &S_GLator_InputFrameTextureIDSu);
glBindTexture(GL_TEXTURE_2D, S_GLator_InputFrameTextureIDSu);
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_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, 4, S_GLator_EffectCommonData.mRenderBufferWidthSu, S_GLator_EffectCommonData.mRenderBufferHeightSu, 0, GL_RGBA, GL_UNSIGNED_BYTE, dataP);
glBindTexture(GL_TEXTURE_2D, S_GLator_InputFrameTextureIDSu);
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, S_GLator_EffectCommonData.mRenderBufferWidthSu, S_GLator_EffectCommonData.mRenderBufferHeightSu, GL_RGBA, GL_UNSIGNED_BYTE, bufferP);
//set the matrix modes
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
//gluPerspective(45.0, (GLdouble)widthL/heightL, 0.1, 100.0);
glOrtho (0, 1, 0, 1, -1, 1);
// Set up the frame-buffer object just like a window.
glViewport(0, 0, widthL, heightL);
glDisable(GL_DEPTH_TEST);
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glBindTexture(GL_TEXTURE_2D, S_GLator_InputFrameTextureIDSu);
//Render the geometry to the frame-buffer object
glBegin(GL_QUADS); //input frame
glColor4f(1.f,1.f,1.f,1.f);
glTexCoord2f(0.0f,0.0f);
glVertex3f(0.f ,0.f ,0.0f);
glTexCoord2f(1.0f,0.0f);
glVertex3f(1.f ,0.f,0.0f);
glTexCoord2f(1.0f,1.f);
glVertex3f(1.f ,1.f,0.0f);
glTexCoord2f(0.0f,1.f);
glVertex3f(0.f ,1.f,0.0f);
glEnd();
您观察到的图片将有所帮助。 – Bahbar 2010-03-17 20:11:06