如何在 openGL 中旋转图像
How to rotate an image in openGL?
我在OpenGL C++下面有一个代码。它有六个形成六边形的三角形。但是,我需要能够垂直旋转它。有人可以帮忙吗?天光环游
细节:我有六个带顶点的独立三角形。此外,还有用于颜色的二维数组。有一个循环从 [这里] 行开始,保持窗口渲染,直到它退出。第 [此处-2] 行的另一行,用于显示所有三角形及其颜色。
//coordinates of triangle
float triangle[6][9] = {
{
0.0, 0.0, 0.0,
-0.5, 0.87, 0.0,
0.5, 0.87, 0.0
},
{
0.0, 0.0, 0.0,
-0.5, -0.87, 0.0,
0.5, -0.87, 0.0
},
{
0.0, 0.0, 0.0,
0.5, 0.87, 0.0,
1.0, 0.0, 0.0
},
{
0.0, 0.0, 0.0,
0.5, -0.87, 0.0,
1.0, 0.0, 0.0
},
{
0.0, 0.0, 0.0,
-0.5, 0.87, 0.0,
-1.0, 0.0, 0.0
},
{
0.0, 0.0, 0.0,
-0.5, -0.87, 0.0,
-1.0, 0.0, 0.0
}
};
float color[][9]{
{
255, 0, 0,
255, 0, 0,
255, 0, 0
},
{
0, 255, 0,
0, 255, 0,
0, 255, 0
},
{
0, 0, 255,
0, 0, 255,
0, 0, 255
}
};
int count = 0;
/* Loop until the user closes the window */ [here] while (!glfwWindowShouldClose(window))
{
glClear(GL_COLOR_BUFFER_BIT);
[here-two] for (int i = 0; i < 6; i++)
{
//Render OpenGL here
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, triangle[i]);
glColorPointer(3, GL_FLOAT, 0, color[count]);
glDrawArrays(GL_TRIANGLES, 0, 3);
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
count++;
if (count > 2) count = 0;
}
//Swap front and back buffers
glfwSwapBuffers(window);
//Poll for and process events
glfwPollEvents();
// Poll for and process events
glfwPollEvents();
}
阅读矩阵
的使用。在这种情况下,大多数游戏所做的是在着色器中应用一个矩阵(作为统一变量),该矩阵将旋转对象。在这种情况下,您将创建一个角度 x 的旋转矩阵,将其传递给着色器,然后每个新帧递增 x 并再次将其传递给着色器。
有关实现细节的更多信息,请阅读以下内容:
https://www.opengl.org/wiki/Uniform_(GLSL) - 创建制服着色器中的变量并更新它们
http://inside.mines.edu/fs_home/gmurray/ArbitraryAxisRotation/-
创建将旋转顶点的矩阵。
还有一个关于矩阵运算的提示:记住以正确的顺序应用它们。如果要让对象围绕其中心旋转,请确保首先应用旋转矩阵,并且网格的原点是其中心。
相关文章:
- 程序仅正确旋转方形图像
- 在C++中使用OpenCV矩阵中的特征将图像旋转90度
- 无法编译此图像旋转代码
- 如何使用OpenCV从图像中检测旋转对象
- 逐像素旋转和翻转图像
- 使用接口上的C 旋转图像
- 在QML中旋转图像时降低CPU使用情况
- 旋转图像不起作用
- Openframeworks-通过OpenGL调用从图像中心旋转图像
- 如何在QT QWidgets C++中围绕图像中心旋转图像
- 如何在 openGL 中旋转图像
- 轻松BMP旋转图像到任何角度
- 在 C 语言中旋转图像对象和指针
- 在画布上绘制旋转图像
- BMP旋转图像
- 程序旋转图像时发生内存泄漏
- 如何在旋转图像时填充边框
- 在opengl中寻找旋转图像的中心
- 在opencv中裁剪旋转图像
- 旋转图像PPM