c++ - 翻译以前绘制的元素 (OpenGL)

标签 c++ opengl translate-animation

如何转换以前绘制的元素?我已经在屏幕上绘制了大约 400 万个顶点,我想在绘制完成后平移它们。我不想每次翻译它们时都重新绘制它们(400 万!)

这是相关代码。

glOrtho(0, 1024, 0, 576, 0, -4096);
glTranslatef(-512, -288, 512);
glRotatef(45, 1, 0, 0);
glTranslatef(512, 0, -512);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(1.F, 1.F, 1.F);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_INT, 0, &vertices[0]);
glDrawElements(GL_QUADS, vertexIndex.size(), GL_UNSIGNED_INT, &vertexIndex[0]);
glDisableClientState(GL_VERTEX_ARRAY);
// I would like to translate here

最佳答案

这是不可能的,您的顶点位置在内部与转换矩阵相乘以获得在屏幕上绘制的最终位置。

因此,如果您在绘制后尝试更改矩阵,它不会对绘制的顶点产生任何影响,而且它会那样做。

要解决您的问题,只需在绘制之前对其进行转换...这是标准方法,没有其他方法可以做到这一点。

关于c++ - 翻译以前绘制的元素 (OpenGL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17901904/

相关文章:

C++:条件表达式中的 Always-Throw 函数

c++ - 通用 C++ 架构

c++ - 如何获取Windows中特定进程使用的物理内存和cpu?

c++ - Visual Studio 2013 Express - 资源编辑不可用

android - 将 Button 移动到另一个 Button 的位置

android - 翻译动画帮助不大

slider 上的 jQuery + css3 过渡

边界框的 OpenGL 深度计算

c++ - 像素路径性能警告 : Pixel transfer is synchronized with 3D rendering

c - 如何获得每个骨骼的绝对矩阵?