2016-05-04 15 views
2

まあ、最近、Qt 5.1.1でOpenGLライブラリを使用しようとしています。私はなぜQtウィジェットに三角形を描くのですか

#ifndef GLWIDGET_H 
#define GLWIDGET_H 

#include <QGLWidget> 

#include <core.hpp> 
#include <cv.hpp> 

#include <GL/glut.h> 

class GLWidget : public QGLWidget 
{ 
    Q_OBJECT 
public: 
    explicit GLWidget(QWidget *parent = 0); 

    void initializeGL(); 
    void paintGL(); 
    void resizeGL(int w, int h); 

signals: 

public slots: 

private: 

}; 

#endif // GLWIDGET_H 

と、ここで、クラスのヘッドファイルのcppファイルをmainwindow.uiにウィジェットを追加し、ここで

がクラスで、クラスにそれを促進

#include "glwidget.h" 

GLWidget::GLWidget(QWidget *parent) : 
    QGLWidget(parent) 
{ 
} 

void GLWidget::initializeGL() 
{ 
    glClearColor((GLclampf)0, (GLclampf)0, \ 
       (GLclampf)1, (GLclampf)1); 
} 

void GLWidget::paintGL() 
{ 
    glClear(GL_COLOR_BUFFER_BIT); 

    glColor3f(1.0, 0, 0); 
    glBegin(GL_TRIANGLES); 
     glVertex3f(-0.5, -0.5, 0); 
     glVertex3f(0.5, -0.5, 0); 
     glVertex3f(0.0, -0.5, 0); 
    glEnd(); 
} 

void GLWidget::resizeGL(int w, int h) 
{ 

} 

しかし、paintGL()のコードはうまくいかないようですが、私はinitializeGL()のコードを変更するだけで背景の色を変えることができます。

プロジェクトの出力は、次のとおり

enter image description here

がアップデートの通りです:私は申し訳ありませんが、私はあなたがセットアップ任意のカメラ行列をしませんでしたので、あなた.proファイル

#------------------------------------------------- 
# 
# Project created by QtCreator 2016-04-27T13:28:29 
# 
#------------------------------------------------- 

QT  += core gui opengl 

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

TARGET = gradDesign 
TEMPLATE = app 


SOURCES += main.cpp\ 
     mainwindow.cpp \ 
     showimage.cpp \ 
     glwidget.cpp 

HEADERS += mainwindow.h \ 
    showimage.h \ 
    glwidget.h 

FORMS += mainwindow.ui \ 
    showimage.ui 

INCLUDEPATH +=F:\\opencv30\\build\\include \ 
    F:\\opencv30\\build\\include\opencv \ 
    F:\\opencv30\build\\include\\opencv2 \ 
    F:\\freeglut\\include 

CONFIG +=debug_and_release 

CONFIG(debug, debug|release) 
{ 
    LIBS +=F:\\opencv30\\build\\x86\\vc12\\lib\\opencv_ts300d.lib \ 
     F:\\opencv30\\build\\x86\\vc12\\lib\\opencv_world300d.lib \ 
     F:\\freeglut\\build\\lib\\freeglutd.lib \ 
     F:\\freeglut\\build\\lib\\freeglut_staticd.lib 
} 

CONFIG(release, debug|release) 
{ 
    LIBS +=F:\\opencv30\\build\\x86\\vc12\\lib\\opencv_ts300.lib \ 
     F:\\opencv30\\build\\x86\\vc12\\lib\\opencv_world300.lib \ 
     F:\\freeglut\\build\\lib\\freeglut.lib \ 
     F:\\freeglut\\build\\lib\\freeglut_static.lib 
} 

RC_ICONS = uestc.ico 

答えて

4

を示して忘れてしまいました仮想カメラの位置と三角形が表示されているかどうかはわかりません。 あなたが正射投影カメラを起動することができます:あなたは縮退三角形を描くしようとしているほか

void GLWidget::resizeGL(int width, int height) 
{ 
    // ... 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 

    glOrtho(-2, +2, -2, +2, -1.0, 1.0); 

    // ... 
} 

(すべてのyは同じです)。試してみてください:

glBegin(GL_TRIANGLES); 
    glVertex3f(-0.5, -0.5, 0); 
    glVertex3f(0.5, -0.5, 0); 
    glVertex3f(0.0, 0.0, 0); 
glEnd(); 
+0

thx多くのカメラのbeacuseです。どうも。 –

関連する問題