gpt4 book ai didi

c - 在特定顶点上使用 glLoadMatrixd ?

转载 作者:行者123 更新时间:2023-11-30 17:16:25 33 4
gpt4 key购买 nike

我正在尝试在旧版 OpenGL 中制作骨骼动画,并认为我可以在各个顶点上使用矩阵。当我编程它但它不起作用时,我做了一些谷歌搜索找到了这个:https://www.talisman.org/opengl-1.1/Reference/glLoadMatrix.html

GL_INVALID_OPERATION is generated if glLoadMatrix is executed between the execution of glBegin and the corresponding execution of glEnd.

所以现在我很困惑。这是一个图表:

enter image description here

骨头被标记为红色。我正在尝试制作骨骼动画,因此有两个矩形。一个使用 Bone 0,第二个使用 Bone 1。只有构成第二个矩形的三角形的特定顶点使用 Bone 1 的旋转矩阵,而那些不使用 Bone 0 的旋转矩阵的三角形,有点像制作一条蛇,如果这是有道理的话。

由于我无法对三角形中的各个顶点使用 glLoadMatrix,那么还有什么其他方法可以根据存储的矩阵来替换顶点呢?也许将一些矩阵值乘以顶点?不知道该怎么做。欢迎任何意见,谢谢!

最佳答案

您提到了两个矩形 Bone0 和 Bone1。您需要单独绘制它们,因为它们需要具有单独的变换矩阵。两个矩形的两点重合,你绘制Bone1的变换矩阵必须保证:

glTranslateF(...);
glRotateF(...); /* position rectangle Bone0 */

glBegin(GL_QUADS); /* draw rectangle Bone0 */
glVertex3f(...); /* draw it */
...
glEnd();

glPushMatrix(); /* save transformation matrix */

glMulMatrix(...); /*
* as per your drawing, this is not just a
* simple translate/rotate operation, but
* a translate/shear
* you need to do that manually
*/

glBegin(GL_QUADS); /*
* draw rectangle Bone1. Two of the vertices are
* coincident with two of rectangle Bone0. Your
* shear matrix must ensure they are
*/
glVertex3F(...);
glEnd();

关于c - 在特定顶点上使用 glLoadMatrixd ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29644792/

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