我想在使用openGL的窗口上顯示紋理。但是,紋理僅映射到窗口的左下角,並被切斷! outputopenGL紋理映射-c
這裏是我的代碼:
質地:
GLuint textureID[1];
GLubyte Image[1024*768*4];
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glGenTextures(1,textureID);
glBindTexture(GL_TEXTURE_2D, textureID[0]);
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, 3, 1024, 768, 0, GL_RGBA, GL_UNSIGNED_BYTE, Image);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
四:
glPushMatrix();
glTranslatef(0, 0.0, -1.1);
glMaterialf(GL_FRONT, GL_SHININESS, 30.0);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, textureID[0]);
glViewport(-511,-383,1025,768);
glBegin(GL_QUADS);
glTexCoord2d(0.0, 0.0); glVertex2f(0.0, 0.0);
glTexCoord2d(1.0, 0.0); glVertex2f(1024.0, 0.0);
glTexCoord2d(1.0, 1.0); glVertex2f(1024.0, 768.0);
glTexCoord2d(0.0, 1.0); glVertex2f(0.0, 768.0);
glEnd();
glDisable(GL_TEXTURE_2D);
glPopMatrix();
glFlush();
我想紋理映射到我的窗口。我的窗口和紋理都有1024x768的大小。我做錯了什麼?如果我註釋掉glViewport
,紋理將被映射到右上角。
任何具體的理由給-ve值指定左下角的視口?你爲什麼不給0,0呢? – Raki
,因爲給0,0或評論它,我們會給我這個[圖片](http://i.imgur.com/USHBwqc.png)。我想要這樣的東西:[image2](http://i.imgur.com/f3DlLVO.png) – user3335341
評論glviewport給你的行爲的原因是,視口(和剪刀箱)被設置爲幀緩衝尺寸(0, 0,1024,768)首次使上下文變爲當前。 – Andreas