質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

Qt

QtはGUIプログラムの開発で広く使われているクロスプラットフォーム開発のフレームワークです。

Q&A

1回答

3035閲覧

OpenGLのマウスビューポート操作

退会済みユーザー

退会済みユーザー

総合スコア0

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

Qt

QtはGUIプログラムの開発で広く使われているクロスプラットフォーム開発のフレームワークです。

0グッド

0クリップ

投稿2015/10/25 11:38

Qt5とOpenGLを使用してビューポートを操作したいのですが、ビューポートが移動しません。
mouseMoveEventで移動値を設定し、paintGLまで値(_x)は渡っているようなのですが、glTraslatedが機能しないのはなぜなのでしょうか。

Qt: 5.5.0

cpp:

1#include <QOpenGLFunctions> 2#include <QOpenGLWidget> 3#include <QQuaternion> 4#include <gl/GLU.h> 5#include <QDebug> 6 7class MyGLViewer : public QOpenGLWidget, protected QOpenGLFunctions 8{ 9public: 10 MyGLViewer(QWidget *parent) 11 : QOpenGLWidget(parent) 12 , _x(0.0){ } 13 14 void initializeGL() 15 { 16 initializeOpenGLFunctions(); 17 glClearColor(1.0f, 1.0f, 1.0f, 1.0f); 18 } 19 20 void resizeGL(int w, int h) 21 { 22 glViewport(0, 0, w, h); 23 glMatrixMode(GL_PROJECTION); 24 glLoadIdentity(); 25 gluPerspective(35.0, (double)w / (double)h, 1.0, 1000.0); 26 gluLookAt(28.0, 21.0, 28.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); 27 qDebug() << "resizeGL"; 28 } 29 30 void drawGrid() 31 { 32 glColor3d(0.0, 0.0, 0.0); 33 glBegin(GL_LINES); 34 glVertex3d( 0.0, 0.0, 10.0 ); 35 glVertex3d( 0.0 , 0.0, -10.0 ); 36 glEnd(); 37 38 glBegin(GL_LINES); 39 glVertex3d( 10.0, 0.0, 0.0 ); 40 glVertex3d( -10.0 , 0.0, 0.0 ); 41 glEnd(); 42 } 43 44 void paintGL() 45 { 46 47 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 48 glTranslated(_x, 0.0, 0.0); 49 drawGrid(); 50 } 51 52 void mouseMoveEvent(QMouseEvent *) 53 { 54 qDebug() << "MOVE"; 55 _x += 0.1; 56 paintGL(); 57 } 58 59private: 60 GLdouble _x; 61 62};

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

マウスイベントのスレッドとOpenGLの描画スレッドが異なるため機能していないからだと思われます。mouseMoveEvent()にある「paintGL」を「QWidget::update()」などに差し替えて、paintGLを描画スレッドから呼び出すようにしてみてください。

投稿2015/11/05 05:04

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問