C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 如何在QML场景上绘制3D线条?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我尝试将Bullet Physics的调试绘图界面集成到QML中,因此我必须实现drawLine()方法.

void drawLine(const btVector3 &from,const btVector3 &to,const btVector3 &color);

我尝试的是我从QQuickItem3D和btIDebugDraw继承了一个在场景中使用的项目.在drawLine()中,我将行添加到成员向量中.在Qt的drawItem()中,我遍历这些行并使用OpenGL调用来渲染它们.但是,它们不会出现在屏幕上.

如何在3D空间和正确的摄像机视图中绘制线条?

void DebugDrawer::drawItem(QGLPainter *painter)
{
    if (lines_.size() < 1)
        return;

    // Draw current lines
    painter->modelViewMatrix().push();
    glBegin(GL_LInes);
    for (auto &line : lines_) {
        glColor3f(line.color.getX(),line.color.getY(),line.color.getZ());
        glVertex3f(line.from.getX(),line.from.getY(),line.from.getZ());
        glVertex3f(line.to.getX(),line.to.getY(),line.to.getZ());
    }
    glEnd();
    painter->modelViewMatrix().pop();

    // Reset buffer
    lines_.clear();
}

解决方法

我最终使用QtQuick的线类,并使用Bullet的flushLines()方法中的setVertices()设置其顶点.

大佬总结

以上是大佬教程为你收集整理的c – 如何在QML场景上绘制3D线条?全部内容,希望文章能够帮你解决c – 如何在QML场景上绘制3D线条?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。