关于opengl中glColor3f的应用

做毕设时发现glColor3f会互相影响,想着说是否可以排除glColor3f的影响?

后来发现其实没必要,其就是opengl是状态机,也就是设置一个状态后它就保持那个状态进行渲染

因此如果要排除glColor3f的影响就要重新设置颜色状态

PS:各种颜色对应的参数(转别人的)

glColor3f(0.0, 0.0, 0.0);  --> 黑色 

glColor3f(1.0, 0.0, 0.0);  --> 红色 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Qt6和OpenGL绘制3D Druaga,可以按照以下步骤进行: 1. 创建Qt Widgets应用程序项目。 2. 添加Qt6的OpenGL模块和Qt6 Widgets模块。 3. 导入OpenGL头文件,并为OpenGL函数创建指针变量。 4. 实现OpenGL的初始化函数,用于设置OpenGL状态。 5. 实现绘制函数,用于绘制3D对象。 6. 在Qt的主窗口创建OpenGL窗口,并在其上方插入其他Qt控件。 以下是一个简单的示例,演示如何使用Qt6和OpenGL绘制3D Druaga: ``` #include <QtWidgets/QMainWindow> #include <QtGui/QSurfaceFormat> #include <QtGui/QOpenGLFunctions> #include <QtGui/QOpenGLShaderProgram> #include <QtOpenGL/QGLWidget> class GLWidget : public QGLWidget, protected QOpenGLFunctions { public: GLWidget(QWidget *parent = nullptr) : QGLWidget(parent) {} protected: void initializeGL() override { initializeOpenGLFunctions(); glClearColor(0.0f, 0.0f, 0.0f, 1.0f); } void resizeGL(int w, int h) override { glViewport(0, 0, w, h); } void paintGL() override { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0f, 1.0f, 1.0f); glBegin(GL_TRIANGLES); glVertex3f(0.0f, 0.5f, 0.0f); glVertex3f(-0.5f, -0.5f, 0.0f); glVertex3f(0.5f, -0.5f, 0.0f); glEnd(); } }; class MainWindow : public QMainWindow { public: MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) { QSurfaceFormat format; format.setDepthBufferSize(24); QSurfaceFormat::setDefaultFormat(format); GLWidget *glWidget = new GLWidget(this); setCentralWidget(glWidget); } }; int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); } ``` 在此示例,我们创建了一个GLWidget类,它继承自QGLWidget和QOpenGLFunctions。在initializeGL函数,我们使用OpenGL函数指针初始化OpenGL状态。在resizeGL函数,我们设置视口大小。在paintGL函数,我们使用OpenGL函数绘制一个三角形。 然后,在MainWindow类,我们创建一个GLWidget,并将其设置为主窗口的心小部件。 这只是一个简单的示例,您可以根据需要进行扩展,以支持更复杂的OpenGL绘图。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值