#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
фреймбуферах читайте здесь: Расширенный OpenGL4. @SnipingPoodle Я не знаю, является ли это «лучшим» решением. Шейдеры геометрии часто работают медленно. В любом случае, это возможное решение.
5. Неясно, что такое «рендеринг с несколькими камерами». Означает ли это, что вам нужно иметь несколько видовых экранов на экране с соответствующими камерами?