2016-12-15 302 views
0

在我的应用程序中,我的屏幕上有10k〜200k行。这条线是2D效果的2D空间。在Android(和iOS)上使用Qt绘制3D效果与openGL的2D效果

我想通过使用Qt来加快我在iOS和Android上绘图的速度。 因此,我想尝试在Qt上使用openGL。

我尝试一个非常简单的代码: https://github.com/mkdh/Qt_QOpenGLWidget_screen_test.git

它应该显示绿色屏幕上我的Android,但它显示在我的Android白屏。 你知道为什么它会在我的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 

顺便说一句,我为什么不能绘制在glBegin(GL_LINES)线为无效MyGLWidget :: initializeGL()评论?

回答

0

我可以通过评论下面的代码来解决这个问题。

// format.setVersion(3,2);

// format.setProfile(QSurfaceFormat :: CoreProfile)

0

我建议你使用NanoVG而不是纯粹的OpenGL,这非常复杂。您在OpenGL上的代码与特定版本的OpenGL绑定在一起,并且可能导致很多可移植性问题。 NanoVG是在OpenGL(2,es,es2,es3)上支持的画布绘制API,并且具有类似HTML5的画布API。另外还有一个与NanoVG Qt整合的QNanoPainter。

此外它支持Linux,Windows和Android。

+0

这不是我想使用的OpenGL的另一个工具是什么。而QNanoPainter似乎不是Qt的官方功能。我可以通过评论下面的代码来解决这个问题。 // format.setVersion(3,2); // format.setProfile(QSurfaceFormat :: CoreProfile); – weilun