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を付けてコメントすると私にこの[image](http://i.imgur.com/USHBwqc.png)が届きます。私はこのようなものが欲しい:[image2](http://i.imgur.com/f3DlLVO.png) – user3335341
glviewportにコメントする理由は、ビューポート(およびscissorbox)がフレームバッファのサイズ(0、 0,1024,768)、コンテキストが最新のものになります。 – Andreas