From bce0048b529ed2f6e7dbc96539717c8d951a906f Mon Sep 17 00:00:00 2001 From: "re.kovalev" Date: Mon, 14 Nov 2022 20:16:55 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B8=D0=BC=D0=B5=D1=80=20=D0=B8?= =?UTF-8?q?=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20UBO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shaders/shader.vert | 11 ++++++++--- src/main.cpp | 9 ++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/shaders/shader.vert b/shaders/shader.vert index 4947387..ffe81bb 100644 --- a/shaders/shader.vert +++ b/shaders/shader.vert @@ -1,16 +1,21 @@ -#version 330 core +#version 420 core layout(location = 0) in vec3 pos; layout(location = 1) in vec2 inTexCoord; layout(location = 2) in vec3 normals; -uniform mat4 vp; +layout(std140, binding = 0) uniform Camera +{ + mat4 projection; + mat4 view; +}; + uniform mat4 model; out vec2 texCoord; void main() { - gl_Position = vp * model * vec4(pos, 1.0); + gl_Position = projection * view * model * vec4(pos, 1.0); texCoord = inTexCoord; } diff --git a/src/main.cpp b/src/main.cpp index 2d4c102..802b2bc 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -192,16 +192,19 @@ int main(void) glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Расположение Uniform-переменной - GLuint vp_uniform = glGetUniformLocation(shaderProgram, "vp"); GLuint model_uniform = glGetUniformLocation(shaderProgram, "model"); + // Uniform-буферы + UBO cameraUB(sizeof(glm::mat4)*2, 0); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); // Использование уменьшенных версий mipmap // Пока не произойдет событие запроса закрытия окна while(!glfwWindowShouldClose(window)) { - // Загрузим матрицу проекции*вида - glUniformMatrix4fv(vp_uniform, 1, GL_FALSE, &Camera::current().getVP()[0][0]); + // Загрузка данных о камере + cameraUB.loadSub(&Camera::current().getProjection(), sizeof(glm::mat4), 0); + cameraUB.loadSub(&Camera::current().getView(), sizeof(glm::mat4), sizeof(glm::mat4)); // Очистка буфера цвета glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);