如何在 Qwidget 的中心设计一个三角形(在 QT 中使用 OpenGl)

How design a Triangle in center of Qwidget ( with OpenGl in QT )

本文关键字:三角形 一个 QT OpenGl Qwidget      更新时间:2023-10-16

我有Ubuntu 14.04,我将设计一个三角形,openglQT,[这个视频][1]他设计了一个这样的三角形:

图1(屏幕中央的三角形)但是我,左边画的三角形,像这样:图2

问题出在哪里?以及如何在中心设计三角形?
我的代码 :

#include<brm.h>
#include<qgl.h>
brm::brm(QWidget *parent )
    : QGLWidget( parent)
{

}


void
brm::initializeGL(){
    glClearColor(0.2,0.2,0.2,1);
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_CULL_FACE);
}
void brm::paintGL(){
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
    glBegin(GL_TRIANGLES);
    glVertex2f(-1.f ,0.f );
    glVertex2f(1.f,0.f);
     glVertex2f(0.f,1.f);
    glEnd();
}
void brm::resize(int width , int height ){
    glViewport(
    0
    ,
    0
    , width, height);
}

和标题:

#ifndef BRM_H
#define BRM_H
#include <QGLWidget>
#include<qwidget.h>
class brm : public QGLWidget
{
    Q_OBJECT
public:
    explicit brm(QWidget *parent = 0);
    void initializeGL();
    void paintGL();
    void resize(int x , int y );

};
#endif // BRM_H

尝试替换

glPushMatrix();

glMatrixMode(GL_PROJECTION);
glLoadIdentity()
glMatrixMode(GL_MODELVIEW);
glLoadIdentity()