OGL ESv2中的相同游戏不适用于OGL 3

时间:2011-06-21 19:59:09

标签: c++ opengl opengl-es opengl-es-2.0 opengl-3

我编写了一个能够使用OpenGL ESv2或OpenGL 3 Core Profile API绘图的引擎。 但是最近OpenGL 3部分被打破了,我不记得我改变了什么,也没看到svn commitlog,因为我确实在bountysource上托管了它现在已经关闭了我把它带到谷歌(但是有了破碎的OGL3端口) )。

使用OpenGL ESv2一切正常,但使用OpenGL 3时,所有内容都会被拉伸并水平镜像。两者都使用相同的矩阵和顶点。

不要混淆。 OpenGL ESv2和OpenGL 3渲染器使用不同的方式渲染它。

OpenGL ESv2使用VBO。 OpenGL 3使用VAO和VBO。

我的引擎是开源的,因此,您可以在此处查看:Source Code

这些应该是重要的部分:Sprite ClassBase Window ClassGL3 Window ClassGL ESv2 Window Class

着色器:

GLv2:fragvert

GL3:fragvert

以下是一些示例图片: OpenGL 3 - Menu OpenGL 3 - Ingame OpenGL ESv2 - Menu OpenGL ESv2 - Ingame

如果有人能帮我解决这个问题,我会非常非常高兴和感激,也许我会给它一点奖励。

编辑: 在480x800窗口中,gldebugger显示了这个矩阵:
modviewmat
{1,-0,0,0} {0,1,0,0}
{0,0,1,0}
{5,770,0,1}
projmat
{2,0,0,0} {0,2,0,0}
{0,0,-1,0} {-1,-1,-0,1}}

1 个答案:

答案 0 :(得分:0)

我太笨了..因为我有两节课。 从基类派生的1个基类和1个特定于平台的实现。 所有变量都是在基类AND中创建的。

所以,我有基类和其他类中矩阵的句柄 OpenGL句柄在基类中初始化。在gl3类中也有句柄,但它们没有初始化,因为它是基类的工作。

tl; dr pseudocode:

基类:glhandle projmatrix
gl3class:glhandle projmatrix

baseclass :: init():( baseclass).promatrix.init
gl3class :: update():( gl3class).projmatrix.update

:/