C++ 如何在应用glRotate()后获取矩形块的新顶点坐标
我正在画一个矩形块:C++ 如何在应用glRotate()后获取矩形块的新顶点坐标,c++,opengl,C++,Opengl,我正在画一个矩形块: GLfloat cubeVertexV[] = { // FRONT -0.5f, -1.0f, 0.5f, 0.5f, -1.0f, 0.5f, -0.5f, 1.0f, 0.5f, 0.5f, 1.0f, 0.5f, // BACK -0.5f, -1.0f, -0.5f, 0.5f, -1.0f, -0.5f, -0.5f, 1.0f, -0.5f, 0.5f,
GLfloat cubeVertexV[] = {
// FRONT
-0.5f, -1.0f, 0.5f,
0.5f, -1.0f, 0.5f,
-0.5f, 1.0f, 0.5f,
0.5f, 1.0f, 0.5f,
// BACK
-0.5f, -1.0f, -0.5f,
0.5f, -1.0f, -0.5f,
-0.5f, 1.0f, -0.5f,
0.5f, 1.0f, -0.5f,
// LEFT
-0.5f, -1.0f, 0.5f,
-0.5f, 1.0f, 0.5f,
-0.5f, -1.0f, -0.5f,
-0.5f, 1.0f, -0.5f,
// RIGHT
0.5f, -1.0f, -0.5f,
0.5f, 1.0f, -0.5f,
0.5f, -1.0f, 0.5f,
0.5f, 1.0f, 0.5f,
// TOP
-0.5f, 1.0f, 0.5f,
0.5f, 1.0f, 0.5f,
-0.5f, 1.0f, -0.5f,
0.5f, 1.0f, -0.5f,
// BOTTOM
-0.5f, -1.0f, 0.5f,
-0.5f, -1.0f, -0.5f,
0.5f, -1.0f, 0.5f,
0.5f, -1.0f, -0.5f,
};
现在,我在该块的x、y和z轴上应用
glRotate()
。现在我想用应用glRotate
调用产生的新坐标更改cubeVertex
数组。这在OpenGL中是否可行?您可以将glGet
与GL\u MODELVIEW\u MATRIX
一起使用,以获取当前MODELVIEW矩阵(假设您对其应用了glRotate
调用)。然后,通过矩阵手动变换顶点。一般来说,OpenGL只会累积变换,并且仅在渲染数据时将其实际应用于数据。在普通的老式固定函数图形管道中,没有办法做到这一点。然而,随着可编程性在每一代人中不断增加,只要您使用的是最新的图形卡,现在就可以通过OpenGL扩展来支持这一点。无论您使用的是nVidia还是ATI卡也可能会有所不同,因为它们并不总是支持相同的扩展
我已经有一段时间没有使用OpenGL了,所以这有点模糊,但总体思路是:
- 绑定一对顶点缓冲区对象
- 把你的数据放在第一个
- 使用变换反馈将变换的顶点渲染到第二个顶点
- 然后,您可以将数据从第二个VBO读回内存李>
如果你想在你的GPU上做更多的普通数学,你应该研究技术,你可以做更多的事情,还有CUDA/OpenCL/等等。编码也变得容易多了 这不是小事,而是查找
glRenderMode(GL\u反馈)代码>以开始。这将不仅为您提供坐标,而且(例如)在应用照明后提供颜色