java — загрузка OpenGL & amp; рендеринга png на экран

Я пытаюсь загрузить перекрестный png, который у меня есть, в игру, которую я разрабатываю с OpenGL, точнее, JOGL.

Перекрестие должно быть загружено в центр экрана.

Однако даже после сканирования интернета в течение нескольких часов — я не нашел способа просто рендерить png-файлы на экран с помощью JOGL, но я верю, что это довольно легко.

Все ответы, которые я нашел, касались текстур, и это не то, что я искал, так как я не планирую делать объект для этого — просто показывать его на экране при необходимости.

Редактировать:

После совета Эльдо попытался сделать следующее в методе отображения:

    gl.glPushMatrix();
gl.glEnable(GL2.GL_TEXTURE_2D);

try {
Texture text = TextureIO.newTexture(getClass().getResourceAsStream("/misc/crosshair.png"),true, "png");
gl.glTexParameteri( GL2.GL_TEXTURE_2D,GL2.GL_TEXTURE_WRAP_T, GL2.GL_REPEAT );
gl.glTexParameteri( GL2.GL_TEXTURE_2D,GL2.GL_TEXTURE_WRAP_S, GL2.GL_REPEAT );
text.bind(gl);
} catch (GLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

float sizeX = 20, sizeY = 20, sizeZ = 20;
gl.glBegin(GL2.GL_QUADS);

// create crosshair square
gl.glTexCoord2d(0, 0);
gl.glVertex3d(0, sizeY, 0);
gl.glTexCoord2d(1, 0);
gl.glVertex3d(sizeX, sizeY, 0);
gl.glTexCoord2d(1, 1);
gl.glVertex3d(sizeX, sizeY, sizeZ);
gl.glTexCoord2d(0, 1);
gl.glVertex3d(0, sizeY, sizeZ);gl.glEnd();
gl.glPopMatrix();

Однако результат, который я получаю (другой материал — просто стены):
введите описание изображения здесь

Вот перекресток PNG:
перекрестие

1

Решение

Вы не можете просто нарисовать изображение, которое легко в середине вашего экрана, OpenGL не «забудет» его фактическое состояние и отобразит ваше изображение, как вы хотите. Но в нескольких шагах вы можете сделать его в состоянии нарисовать его после того, как вы закончили рендеринг всех ваших 3D-материалов.

gl.glMatrixMode(GL.GL_PROJECTION); //reset the projection matrix
gl.glLoadIdentity();
gl.glOrtho(left, right, bottom, top, near, far);//change to orthographic projection
gl.glMatrixMode(GL.GL_MODELVIEW);// reset the modelview matrix
gl.glLoadIdentity();
gl.glDisable(GL.GL_DEPTH_TEST);//disable depth test
//draw 2D stuff here

После этого вы можете нарисовать квад по центру экрана с текстурой перекрестия.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]