У меня есть приложение Java OpenGL (JOGL), и я пытаюсь создать четырехугольник с отображением текстуры, который покрывает весь экран. Нарисуйте несколько пикселей в буфер, а затем я хочу прочитать эти пиксели в текстуре и перерисовать их на экране (с применением фрагментного шейдера). Мой код для сопоставления текстуры с окном просмотра:
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glPushMatrix();
gl.glLoadIdentity();
gl.glOrtho( 0, width, height, 0, -1, 1 );
gl.glMatrixMode(GL.GL_MODELVIEW);
gl.glPushMatrix();
gl.glLoadIdentity();
IntBuffer ib = IntBuffer.allocate(1);
gl.glEnable(GL.GL_TEXTURE_2D);
gl.glGenTextures(1, ib);
gl.glPixelStorei(GL.GL_PACK_ALIGNMENT, 1);
//buff contains pixels read from glReadPixels
gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, GL.GL_RGBA, width, height, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, buff);
gl.glBindTexture(GL.GL_TEXTURE_2D, ib.get(0));
gl.glBegin(GL.GL_QUADS);
gl.glTexCoord2f(0,1);
gl.glVertex2f(0,0);
gl.glTexCoord2f(0,0);
gl.glVertex2f(0,height);
gl.glTexCoord2f(1,0);
gl.glVertex2f(width,height);
gl.glTexCoord2f(1,1);
gl.glVertex2f(width,0);
gl.glEnd();
gl.glBindTexture(GL.GL_TEXTURE_2D, 0);
gl.glPopMatrix();
gl.glPopMatrix();
Конечным результатом является четырехугольник, который не покрывает всю область просмотра (частично включен) и не содержит пикселей из буфера. Что я здесь неправильно делаю?
спасибо Джефф
glOrtho
вызове) эффективно меняет ориентацию ваших лиц. Но поскольку вы хоть что-то видите, это не будет вашей проблемой, так как при отбраковке вы вообще ничего не увидите. - person Christian Rau   schedule 11.06.2011