glm-math 相关问题

GLM是一个C ++数学库,旨在尽可能地模仿OpenGL着色语言的数学函数和类型(向量,矩阵)。

顶点位置未正确导入/在 OpenGL 中正确绘制 [关闭]

我最近遇到问题时试图在我的 OpenGL 应用程序中导入网格。网格导入成功,但是在渲染时它看起来完全毁容了。它看起来...

回答 1 投票 0

OpenGL 和 GLSL 几何着色器只渲染一个点而不是三角形

我正在尝试渲染一个正方形,但它只渲染一个点,我不确定为什么。我知道发送到 gpu 的数据是有效的,这是正在发送的数据 结构 gpuData{...

回答 0 投票 0

检查射线和立方体相交的问题

我现在被我的 RubiksCube 项目困住了。 我想要实现的目标:左键单击时检查是否单击了单个 Mini-Cubie。 (点击时立方体可能会旋转) o...的代码

回答 1 投票 0

C++ Rubiks Cube - 检查射线和立方体相交的问题

我现在被我的 RubiksCube 项目困住了。 我想要实现的目标:左键单击检查是否单击了多维数据集。 (点击时立方体可能会旋转) 其他魔方的代码......

回答 0 投票 0

如何在具有模板参数 D 和 T 的类的构造函数中初始化 glm::vec<D, T, glm::highp> 类型的成员?

我有一个未完成的类 MyClass 包装 glm::vec: 模板 我的班级 { 民众: 我的课(???) : myVec(???) { /* 做东西 */ } 私人的: ...

回答 0 投票 0

如何在 OpenGL ES3 中绘制点

如何在 OpenGL ES3 中绘制点? 我正在使用 GL_POINTS 原语。 顶点数据 // 位置颜色 {{1.0f, 1.0f, 0.0f}, {1.0f, 0.0f, 0.0f, 1.0f}} 在顶点着色器中 gl_PointSize = 1...

回答 0 投票 0

为什么这个正方形网格没有正确绘制?

为什么这个正方形网格没有正确绘制? 我有一个关于如何绘制网格的数组 // 在这里,1 表示一堵墙,0 表示一个空方块 const int mapX = 8, mapY = 8, mapSize=mapX*m...

回答 1 投票 0

应用 MVP 转换不会渲染任何 OpenGL

我正在尝试将 MVP 转换应用于 OpenGL 中的正方形 但是,它什么也没显示。 如果我从 Vertex Shader 中删除 mvp,就会渲染 Square 我正在使用 cglm 作为数学库,但是...

回答 1 投票 0

无法向着色器发送统一值

我试图为我的着色器设置一些统一的值,但我只能得到一个我之前已经使用过的纹理(slot 0),并且所有矩阵都填充为 0。 这是我的代码的一部分。 glUseProgram(

回答 2 投票 0

渲染纹理的问题,因为它显示为全黑

尽管在练习部分从 learnopengl 复制了代码,但我在渲染精灵时遇到了麻烦。一开始我以为什么都没有渲染,但是从黑色变成了

回答 1 投票 0

如何在我的程序中调整 glm::lookAt() 以使用 WASD 键移动“相机”?

我使用 OpenGL 创建了一个地平面,并尝试在按下 W 时向前移动“相机”,在按下 S 时向后移动,在按下 D 时向右看,在按下 A 时向左看。我 .. .

回答 1 投票 0

OpenGL 问题:我只能在尝试绘制深度纹理时变白

我试图在正方形上绘制深度纹理,但只有这样的白色 带小屋的白色广场 此外,我也尝试生成点光影立方体贴图,但它仍然只有白色....

回答 1 投票 0

OpenGL立方体渲染错误

我有 108 个 GLfloat 变量的数组,它们形成 36 个顶点和相同的颜色数组。 #包括 #包括 #包括 #包括 我有 108 个 GLfloat 变量的数组,它们形成 36 个顶点和相同的颜色数组。 #include <iostream> #include <SFML/Graphics.hpp> #include <GL/glew.h> #include <GL/GL.h> #include <glm/glm.hpp> #include <glm/gtc/matrix_transform.hpp> const GLchar* codeVertArray[] = { "#version 460\nin vec3 VertexPosition;layout(location = 1) in vec3 vertexColor;out vec3 Color;uniform mat4 RotationMatrix;void main(){Color = vertexColor;gl_Position = RotationMatrix * vec4(VertexPosition / 2, 1.0);}" }; const GLchar* codeFragArray[] = { "#version 460\n in vec3 Color;\nout vec4 FragColor;\nvoid main()\n {FragColor = vec4(Color, 1);}" }; GLfloat g_vertex_buffer_data[] = { -1.0f, -1.0f, -1.0f, 1.0f, -1.0f, -1.0f, 1.0f, 1.0f, -1.0f, 1.0f, 1.0f, -1.0f, -1.0f, 1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, 1.0f, 1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, -1.0f, 1.0f, 1.0f, -1.0f, -1.0f, 1.0f, -1.0f, 1.0f, 1.0f, -1.0f, 1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, 1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, -1.0f, 1.0f, -1.0f, -1.0f, 1.0f, -1.0f, -1.0f, 1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, -1.0f, -1.0f, -1.0f, 1.0f, -1.0f, -1.0f, 1.0f, -1.0f, 1.0f, 1.0f, -1.0f, 1.0f, -1.0f, -1.0f, 1.0f, -1.0f, -1.0f, -1.0f, -1.0f, 1.0f, -1.0f, 1.0f, 1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, -1.0f, 1.0f, 1.0f, -1.0f, 1.0f, -1.0f }; static const GLfloat g_color_buffer_data[] = { 0.583f, 0.771f, 0.014f, 0.609f, 0.115f, 0.436f, 0.327f, 0.483f, 0.844f, 0.822f, 0.569f, 0.201f, 0.435f, 0.602f, 0.223f, 0.310f, 0.747f, 0.185f, 0.597f, 0.770f, 0.761f, 0.559f, 0.436f, 0.730f, 0.359f, 0.583f, 0.152f, 0.483f, 0.596f, 0.789f, 0.559f, 0.861f, 0.639f, 0.195f, 0.548f, 0.859f, 0.014f, 0.184f, 0.576f, 0.771f, 0.328f, 0.970f, 0.406f, 0.615f, 0.116f, 0.676f, 0.977f, 0.133f, 0.971f, 0.572f, 0.833f, 0.140f, 0.616f, 0.489f, 0.997f, 0.513f, 0.064f, 0.945f, 0.719f, 0.592f, 0.543f, 0.021f, 0.978f, 0.279f, 0.317f, 0.505f, 0.167f, 0.620f, 0.077f, 0.347f, 0.857f, 0.137f, 0.055f, 0.953f, 0.042f, 0.714f, 0.505f, 0.345f, 0.783f, 0.290f, 0.734f, 0.722f, 0.645f, 0.174f, 0.302f, 0.455f, 0.848f, 0.225f, 0.587f, 0.040f, 0.517f, 0.713f, 0.338f, 0.053f, 0.959f, 0.120f, 0.393f, 0.621f, 0.362f, 0.673f, 0.211f, 0.457f, 0.820f, 0.883f, 0.371f, 0.982f, 0.099f, 0.879f }; int main() { using glm::mat4; using glm::vec3; sf::RenderWindow window(sf::VideoMode(1000, 1000), "My window"); window.setActive(); window.setFramerateLimit(60); if (glewInit() != GLEW_OK) { std::cout << "Glew init problem" << std::endl; return -1; } GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER); glShaderSource(vertexShader, 1, codeVertArray, nullptr); GLuint fragShader = glCreateShader(GL_FRAGMENT_SHADER); glShaderSource(fragShader, 1, codeFragArray, nullptr); GLuint shaderHandle = glCreateProgram(); glAttachShader(shaderHandle, vertexShader); glAttachShader(shaderHandle, fragShader); glLinkProgram(shaderHandle); glDeleteShader(vertexShader); glDeleteShader(fragShader); GLuint vao; GLuint VAOposId; GLuint colorbuffer; glGenVertexArrays(1, &vao); glBindVertexArray(vao); glGenBuffers(1, &VAOposId); glBindBuffer(GL_ARRAY_BUFFER, VAOposId); glBufferData(GL_ARRAY_BUFFER, sizeof(g_vertex_buffer_data), g_vertex_buffer_data, GL_STATIC_DRAW); glEnableVertexAttribArray(0); glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (void*)0); glGenBuffers(1, &colorbuffer); glBindBuffer(GL_ARRAY_BUFFER, colorbuffer); glEnableVertexAttribArray(1); glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 0, (void*)0); glBufferData(GL_ARRAY_BUFFER, sizeof(g_color_buffer_data), g_color_buffer_data, GL_STATIC_DRAW); glBindBuffer(GL_ARRAY_BUFFER, 0); glBindVertexArray(0); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LESS); mat4 rotationMatrix = mat4(1.0f); float angle = 0; while (window.isOpen()) { sf::Event event; while (window.pollEvent(event)) { if (event.type == sf::Event::Closed) window.close(); } glUseProgram(shaderHandle); rotationMatrix = glm::rotate(mat4(1.0f), glm::radians(angle), vec3(0, 1, 1)); GLuint location = glGetUniformLocation(shaderHandle, "RotationMatrix"); angle++; glUniformMatrix4fv(location, 1, GL_FALSE, &rotationMatrix[0][0]); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glClearColor(0, 0, 0, 1); glBindVertexArray(vao); glEnableVertexAttribArray(0); glEnableVertexAttribArray(1); glDrawArrays(GL_TRIANGLES, 0, 36); window.display(); } return 0; } 我为此创建了 2 个 VBO 并将其添加到 VAO: glGenVertexArrays(1, &vao); glBindVertexArray(vao); glGenBuffers(1, &VAOposId); glBindBuffer(GL_ARRAY_BUFFER, VAOposId); glBufferData(GL_ARRAY_BUFFER, sizeof(g_vertex_buffer_data), g_vertex_buffer_data, GL_STATIC_DRAW); glEnableVertexAttribArray(0); glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (void*)0); glGenBuffers(1, &colorbuffer); glBindBuffer(GL_ARRAY_BUFFER, colorbuffer); glEnableVertexAttribArray(1); glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 0, (void*)0); glBufferData(GL_ARRAY_BUFFER, sizeof(g_color_buffer_data), g_color_buffer_data, GL_STATIC_DRAW); glBindBuffer(GL_ARRAY_BUFFER, 0); 然后在window update cycle中绘制VAO: glBindVertexArray(vao); glEnableVertexAttribArray(0); glEnableVertexAttribArray(1); glDrawArrays(GL_TRIANGLES, 0, 36); 但是有些三角形渲染有问题 https://imgur.com/a/Wfk5au0 我只用渲染代码创建新项目https://github.com/DLOzTOR/CubeOpenGL,但仍然有这个问题。 也许缓冲区配置或 glDrawArrays 设置有问题?

回答 0 投票 0

我的 Pygame OpenGL 游戏的相机无法工作

我正在关注 Let's Code 3D Engine in Pygame。 OpenGL 教程 https://www.youtube.com/watch?v=eJDIsFJN4OQ&t=695s 并且它不像我用鼠标旋转相机时那样工作...

回答 0 投票 0

将物体的旋转与第一人称相机opengl对齐。

我想实现一个子弹,所以我有了这个自由移动的第一人称摄像机。我从learopengl.com得到了这个摄像头,这是编码。/ 摄像机的默认值 const float YAW = -90......

回答 1 投票 0

当与glUniformMatrix4fv一起使用时,PyOpenGL中的glm's value_ptr返回错误。

我在PyOpenGL上使用着色器来渲染东西,现在我想使用矩阵来转换我的顶点,将它们传递给着色器。为此,我在我的主代码中定义了一个变换矩阵,使用...

回答 1 投票 1

为什么从上面直接往下看一个形状的时候没有渲染?

我修改了一下tutorial04.cpp,来自http:/www.opengl-tutorial.orgbeginners-tutorialstutorial-4-a-colored-cube,我做了一个金字塔形状,我想把摄像头放在金字塔上面,然后...

回答 1 投票 -1

矩阵和向量乘法使用GLM返回错误的结果。

我有一个常数c和vec4 x=(x_1, x_2, x_3, x_4)的等式:x_1*c + x_2*c + x_3*c + x_4*c 其中 sum(x_i) = 1 这意味着,结果应该是c:=(x_1 + x_2 + x_3 + x_4) * c = 1 * c = c ... ...

回答 1 投票 0

切线和位线与法线不正交。

我正试图计算地形的切线和位切向量。我按照这个教程找出如何计算这2个向量,根据我的理解,切线位相切和 ...

回答 1 投票 1

OpenGL - 在任意轴上转换一个对象。

我有一个球体和通过其原点的轴。我想将球体在其轴上进行上下转换。在它的起始位置,这是没有问题的,因为轴开始平行于全局的y......。

回答 1 投票 1

© www.soinside.com 2019 - 2024. All rights reserved.