2016-12-15 12 views
0

私のアプリでは、画面に10k〜200k行があります。そして、線は3D効果で2D空間に描画されます。Android(およびiOS)でQtを使用して2d行のOpenGLで3D効果を描画します

Qtを使って、iOSとAndroidで描画速度を上げたいと思います。 QtでopenGLを試してみたい。

私はかなり単純なコードしてみてください:それは私のAndroid上で緑色の画面を表示する必要がありますが、それは私のAndroidの上で白い画面を示し https://github.com/mkdh/Qt_QOpenGLWidget_screen_test.git

を。 Androidで白い画面が表示される理由をご存知ですか?このAndroidでopenGLを使用したい場合、どうすればいいですか?

クリエーターのアプリケーションの出力:ところで

InputMethodManagerService(536): Enabling: SessionState{uid 10287 pid 25474 method 224d6020 session 2250c900 channel ClientState{22861db8 uid 10287 pid 25474} (server)} 
W/My First openGL Widget(25474): (null):0 ((null)): Cannot find EGLConfig, returning null config 
W/My First openGL Widget(25474): (null):0 ((null)): QEGLPlatformContext: Failed to create context: 3005 
W/My First openGL Widget(25474): (null):0 ((null)): Cannot find EGLConfig, returning null config 
W/My First openGL Widget(25474): (null):0 ((null)): QEGLPlatformContext: Failed to create context: 3005 
W/My First openGL Widget(25474): (null):0 ((null)): QOpenGLWidget: Failed to create context 
W/My First openGL Widget(25474): (null):0 ((null)): Cannot find EGLConfig, returning null config 
W/My First openGL Widget(25474): (null):0 ((null)): QEGLPlatformContext: Failed to create context: 3005 
W/My First openGL Widget(25474): (null):0 ((null)): QOpenGLWidget: Failed to create context 
W/My First openGL Widget(25474): (null):0 ((null)): Cannot find EGLConfig, returning null config 
W/My First openGL Widget(25474): (null):0 ((null)): QEGLPlatformContext: Failed to create context: 3005 
W/My First openGL Widget(25474): (null):0 ((null)): QOpenGLWidget: Failed to create context 
W/My First openGL Widget(25474): (null):0 ((null)): composeAndFlush: makeCurrent() failed 
W/My First openGL Widget(25474): (null):0 ((null)): composeAndFlush: makeCurrent() failed 

、なぜ私は、ボイドMyGLWidgetにコメント:: initializeGL()としてglBegin(GL_LINES)で線を引くことができませんか?

答えて

0

私はこの問題を下記のコメントで解決できます。

// format.setVersion(3、2);

//私は、OpenGLのために別のツールを使用することを望むものではありませんformat.setProfile(QSurfaceFormat :: CoreProfile)

0

非常に複雑な純粋なOpenGLの代わりにNanoVGを使用することをお勧めします。 OpenGLのコードは、OpenGLの特定のバージョンに関連付けられており、多くの移植性の問題を引き起こす可能性があります。 NanoVGは、OpenGL(2、es、es2、es3)をベースにしたキャンバス描画APIで、HTML5のようなキャンバスAPIを持っています。 QNanoPainterであるNanoVGとのQt統合もあります。

また、Linux、Windows、androidでもサポートされています。

+0

。 QNanoPainterはQtの公式な機能ではないようです。私はこの問題を下記のコメントで修正できます。 // format.setVersion(3、2); // format.setProfile(QSurfaceFormat :: CoreProfile); – weilun

関連する問題