gpt4 book ai didi

c++ - 跟随 2d 播放器 openGL

转载 作者:行者123 更新时间:2023-12-01 14:48:28 28 4
gpt4 key购买 nike

所以我遇到了这个小问题,我的相机错误地固定在播放器上。
Game screen

左上角的蓝色 Sprite 是玩家,但它应该位于屏幕中央。关于这个问题的所有其他线程都使用固定渲染管道,而我使用基于 VBO 的线程。

我的矩阵如下:

变换矩阵:

glm::vec2 position = glm::vec2(x, y); 
glm::vec2 size = glm::vec2(width, height);
this->transform = glm::translate(this->transform, glm::vec3(position, 0.0f));
this->transform = glm::scale(this->transform, glm::vec3(size, 1.0f));

投影矩阵:
glm::mat4 Screen::projection2D = glm::ortho(0.0f, (float)800, (float)600, 0.0f, -1.0f, 1.0f);
查看矩阵(其中平移是玩家的平移):
Screen::view = glm::lookAt(translation, translation+glm::vec3(0,0,-1), glm::vec3(0,1,0));
和顶点着色器:
#version 330 core

layout (location = 0) in vec3 aPos;
layout (location = 1) in vec2 aTexCoord;

uniform mat4 transform;
uniform mat4 projection;
uniform mat4 view;


out vec2 TexCoord;


void main()
{
gl_Position = projection * view* transform * vec4(aPos.xy, 0.0, 1.0);
TexCoord = aTexCoord;
}

那么这里出了什么问题。我对它的工作方式有什么不明白的地方吗?还是我在某个地方犯了一个小错误?

最佳答案

所以我自己找到了答案XD,

翻译必须通过减去屏幕宽度和高度的一半来居中。
glm::vec3 cameraPos = glm::vec3(translation.x-Screen::width*0.5f, translation.y-Screen::height*0.5f, translation.z);

关于c++ - 跟随 2d 播放器 openGL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60773717/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com