Pencerede dokuyu openGL kullanarak görüntülemeye çalışıyorum. Ancak, doku sadece penceremin sol alt tarafına haritalanıyor ve kesiliyor! outputopenGL Doku eşleme - c
İşte benim kodudur:
Doku:
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);
Quad:
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();
benim penceresine dokusunu haritasına çalışıyorum. Hem pencerem hem de doku 1024x768 boyutlarında. Neyi yanlış yaptım? glViewport
'u açıklarsam, doku sağ üstte eşleştirilir.
Görünümün sol alt köşesini belirtmede -ve değerlerini vermek için belirli bir neden var mı? neden orada 0,0 vermiyorsun? – Raki
çünkü 0,0 veya yorum yapıyoruz, bunu bana vereceğiz [image] (http://i.imgur.com/USHBwqc.png). Şöyle bir şey istiyorum: [image2] (http://i.imgur.com/f3DlLVO.png) – user3335341
glviewport'a yorum yapmanın nedeni, bu davranışın, viewport'un (ve scissorbox) framebuffer boyutlarına (0, 0,1024,768) ilk defa bağlam güncel hale getirildi. – Andreas