干扰矢量在GlBegin()中
Interfering Vector in glBegin()
我正在尝试实现分配代码以渲染骨架和网状动画。在我的glbegin(gl_triangles)部分中,我有一些向量,这些向量似乎在不应该时会干扰我的信息。
glBegin(GL_TRIANGLES);
for (int i = 0; i < mesh->nfaces.size(); i += 1)
for (int k = 0; k < 3; k += 1) {
int j = k;//2 - k;
glm::vec4 myPointPrime;
myPointPrime.w = 1;
myPoint.x = ecks = mesh->vertex[mesh->faces[i][j]][0];
myPoint.y = why = mesh->vertex[mesh->faces[i][j]][1];
myPoint.z = zed = mesh->vertex[mesh->faces[i][j]][2];
// Stuff vvvv THIS CAUSES PROBLEMS
for (int t = 0; t < mySkeleton->vertex.at(i).size(); t++) {
myPointPrime += mySkeleton->vertex[i][j] * MyXformations * myPoint;
}
glNormal3f(mesh->normal[mesh->nfaces[i][j]][0],
mesh->normal[mesh->nfaces[i][j]][1],
mesh->normal[mesh->nfaces[i][j]][2]);
glVertex3f(mesh->vertex[mesh->faces[i][j]][0],
mesh->vertex[mesh->faces[i][j]][1],
mesh->vertex[mesh->faces[i][j]][2]);
// glVertex3f(myPointPrime.x, myPointPrime.y, myPointPrime.z);
// glVertex3f(myPoint.x, myPoint.y, myPoint.z);
}
glEnd();
mypointprime = ...代码对我的顶点调用做一些奇怪的事情,除非我对循环进行评论,否则场景不会呈现。
如果我评论循环,则场景呈现,但是我认为如果对16,000个顶点类似动画,我有点需要循环。
有一种有点像将其自动乘以Glvertex调用吗?
编辑:
下面是我希望应该更清楚的代码的另一个版本,而不是计算实际的绘图代码中的点,我更改整个网格以遵循每个帧遵循骨架,但没有任何渲染。
for (int vertex_i = 0; vertex_i < mesh->nfaces.size(); vertex_i++) {
for (int k = 0; k < 3; k += 1) {
int j = k;//2 - k;
pointp.x = 0;
pointp.y = 0;
pointp.z = 0;
for (int t = 0; t < mySkeleton->vertex.at(vertex_i).size(); t++) {
point.x = mesh->vertex[mesh->faces[vertex_i][j]][0];
point.y = mesh->vertex[mesh->faces[vertex_i][j]][1];
point.z = mesh->vertex[mesh->faces[vertex_i][j]][2];
//glPushMatrix();
pointp += mySkeleton->vertex[vertex_i][t] * myTranslationMatrix * myRotationMatrix * point;
cout << "PointP X: " << pointp.x << " PointP Y: " << pointp.y << " PointP Z: " << pointp.z << endl;
mesh->vertex[mesh->faces[vertex_i][j]][0] = pointp.x;
mesh->vertex[mesh->faces[vertex_i][j]][1] = pointp.y;
mesh->vertex[mesh->faces[vertex_i][j]][2] = pointp.z;
//myPointPrime += MyXformations * myPoint;
}
}
}
我的假设是,Pointp的计算可能不做我认为它做的事情?
myskeleton-> vertex [vertex_i] [t]是我的"骨架"类的向量,它容纳每个顶点的所有权重,每个顶点有17个权重。
" myxformations"是一个从我的骨架动画函数传递的4x4矩阵,它具有最后已知的关键框架,并将其应用于顶点。
点是顶点中的当前点。
您的循环变量为 t
。但是,您在循环中指的是j
。在我看来,您的循环可能只是崩溃的j
值。
您在for循环中不使用t
。这是预期的吗?
mySkeleton->vertex[i][j]
看起来不超出界限,因为j
应该适用于mesh->faces
/mesh->nfaces
。
您也可以将glNormal3fv
和glVertex3fv
与数组一起使用。
在界限内内存操作中,您可以看到各种怪异的事情发生,尽管我看不到任何界限。您的*
操作员不修改对象吗?
如果您担心性能。您不应该使用立即模式。取而代之的是,将所有数据放在GPU上使用缓冲对象(包括联接/骨转换),并在顶点着色器中飞出动画。
这是几年前的,但值得一读:动画人群渲染。
- AddDllDirectory会干扰后续的LoadLibraryExW
- opengl glBegin(GL_LINES) 和 glBegin(GL_POINT) 在 2D 中不可视化点矢量
- DropBox 会干扰 DeleteFile()/rename() 吗?
- 构造函数干扰成员变量指定的初始值设定项?
- C++ 无效双指针干扰另一个
- 来自不同翻译单元的函数会干扰吗?
- 如何在忽略C++中的干扰词的同时解析用户输入?
- 如何在 Win32 应用中拖动纯色矩形,而不会产生白色闪烁,也不会干扰其他屏幕对象
- OpenGl gldrawarrays较慢,然后glbegin
- 自动收报机中断会干扰硬件中断吗?
- 在功能方面遇到了一些问题,以及它们如何干扰Main
- 干扰矢量在GlBegin()中
- 正确读取被ID3标签干扰的MP3文件
- GetAsyncKeyState() - 外部程序会干扰它
- OpenGL绘制圆圈 /椭圆(填充)无GLBEGIN
- 干扰GETLINE功能的东西
- QOpenGLWidget:以60FPS绘制,同时不干扰其现有时序
- 如果二进制运算符+重载的返回值是const,它会干扰优化吗
- std::unique_ptr 干扰某些 sf::RenderWindow 函数
- 如何识别AVL树中的干扰节点