小编Flo*_*ume的帖子

Qt3d。在三角形上绘制透明的QSphereMesh

我有一个可以通过OpenGL绘制三角形的函数

我通过按下一个按钮绘制两个三角形(函数on_drawMapPushButton_clicked())。

然后我在这些三角形上方绘制一个球体。现在我看到,该球体正确地绘制在第一个三角形上,但是第二个三角形却绘制了该球体,反之亦然。

如果我第二次按下按钮,则会在第一个和第二个三角形上正确绘制spehere。

当我第三次按下按钮时,第二个三角形再次在球体上绘制。

当我第四次按下按钮时,会在第一个和第二个三角形上正确绘制spehere,依此类推。

如果我在SphereMesh QPhongMaterial而不是QPhongAlphaMaterial中使用,则始终在第一个和第二个三角形上正确绘制spehere。喜欢它必须是。

我不明白我为使球体总是绘制在三角形上做错了什么。

绘制透明球体的代码:

selectModel_ = new Qt3DExtras::QSphereMesh(selectEntity_);
selectModel_->setRadius(75);
selectModel_->setSlices(150);

selectMaterial_ = new Qt3DExtras::QPhongAlphaMaterial(selectEntity_);
selectMaterial_->setAmbient(QColor(28, 61, 136));
selectMaterial_->setDiffuse(QColor(11, 56, 159));
selectMaterial_->setSpecular(QColor(10, 67, 199));
selectMaterial_->setShininess(0.8f);

selectEntity_->addComponent(selectModel_);
selectEntity_->addComponent(selectMaterial_);
Run Code Online (Sandbox Code Playgroud)

函数drawTriangles:

void drawTriangles(QPolygonF triangles, QColor color){
    int numOfVertices = triangles.size();

    // Create and fill vertex buffer
    QByteArray bufferBytes;
    bufferBytes.resize(3 * numOfVertices * static_cast<int>(sizeof(float)));
    float *positions = reinterpret_cast<float*>(bufferBytes.data());

    for(auto point : triangles){
        *positions++ = static_cast<float>(point.x());
        *positions++ = 0.0f; //We need to drow only on the surface
        *positions++ = static_cast<float>(point.y()); …
Run Code Online (Sandbox Code Playgroud)

c++ opengl qt qt3d

4
推荐指数
2
解决办法
542
查看次数

在QT Creator的调色板编辑器中编辑小部件的背景颜色

我想在QT Creator的图形设计器中更改QWidget的背景颜色.我知道如何以编程方式执行此操作并知道如何编辑所有其他颜色,例如文本等颜色.但调色板编辑器似乎没有背景颜色选项.有人能指出我在这里缺少的东西吗?

PS:我搜索了很多,但当然只得到了编码解决方案,但我想避免尽可能多的编码进行视图设置.

这里没有背景颜色选项

qt background-color qt-creator

1
推荐指数
1
解决办法
2352
查看次数

标签 统计

qt ×2

background-color ×1

c++ ×1

opengl ×1

qt-creator ×1

qt3d ×1