Несколько камер в LWJGL?

#java #opengl #lwjgl

Вопрос:

Я хочу, чтобы для моего игрового движка одновременно отображалось несколько камер. Моя проблема в том, что мой вершинный шейдер использует одну матрицу просмотра, что означает, что у меня не может быть нескольких камер. Я думал о том, как я мог бы это изменить, и многие поиски в Google позже ничего не дали. Не обязательно запрашивать код, но любые статьи или указатели в правильном направлении были бы очень полезны. Мой вершинный шейдер находится внизу.

 #version 460 core

layout(location = 0) in vec3 vertexPosition;
layout(location = 1) in vec3 vertexColor;
layout(location = 2) in vec2 vertexTextureCoordinate;
layout(location = 3) in vec3 vertexNormal;

out vec3 vertex_position;
out vec3 vertex_color;
out vec2 vertex_textureCoord;
out vec3 vertex_normal;

out vec4 worldPosition;

uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;

void main() {
    worldPosition = model * vec4(vertexPosition, 1.0);
    gl_Position = projection * view * worldPosition;

    vertex_position = vec4(vec4(vertexPosition, 1.f) * model).xyz;
    vertex_color = vertexColor;
    vertex_textureCoord = vertexTextureCoordinate;
    vertex_normal = (model * vec4(vertexNormal, 0.0f)).xyz;
}
 

Комментарии:

1. Вы должны визуализировать сцену отдельно для каждой камеры. Или используйте многоуровневый рендеринг .

2. Спасибо за предложение по многоуровневому рендерингу. После прочтения некоторых статей, похоже, это охватывает именно то, что мне нужно. Спасибо!

3. Несмотря на то, что ответ @Rabbid76 является лучшим для этой ситуации ; вы также можете воспользоваться помощью «просто просто FBOs » вместо layered FBOs того, чтобы проходить через сложное GS ; и отображать каждую сцену камеры в новом буфере кадров и удобно использовать нужные камеры через их соответствующие буферы кадров, которые привязаны. Подробнее о FBOs фреймбуферах читайте здесь: Расширенный OpenGL

4. @SnipingPoodle Я не знаю, является ли это «лучшим» решением. Шейдеры геометрии часто работают медленно. В любом случае, это возможное решение.

5. Неясно, что такое «рендеринг с несколькими камерами». Означает ли это, что вам нужно иметь несколько видовых экранов на экране с соответствующими камерами?