gameknife / gkEngine

A cross-platform game engine with cutting-edge real-time rendering tech & fantastic speed.
http://gameknife.github.io
493 stars 142 forks source link

Windows平台RendererGL330维护 #2

Closed gameknife closed 9 years ago

gameknife commented 9 years ago

目前GL330在windows平台可以加载,但是渲染不出东西,一片黑屏。 之前运行成功过,应该是某个小bug。 具体代码可以参照RendererGLES2,之前的GL330实现方法是直接照搬GLES2。

在RendererGL330成功运行之后,可以修改我之前的实现方式,之前是用一个GLFW的框架来建立设备,可能比较粗陋,也许有更好方法。

待到这个issue解决,可以考虑与RendererD3D9同步开发高级渲染功能,真正实现GL330的API特性

GraphicGame commented 9 years ago

任务已领取。

gameknife commented 9 years ago

感谢关注!期待深入合作!对这个问题或者引擎其他部分有什么问题,请都在ISSUE里提出哈。尽量系统一些,当然我也会编辑~ 这样应该可以解决大多数人的问题!

GraphicGame commented 9 years ago

依然在解决问题中。。。

GraphicGame commented 9 years ago

暂时放弃解决,补充完基础知识后(1个月左右),会再次尝试解决。

gameknife commented 9 years ago

该问题已在 @57a32a737b6d0b620ea65c84f0cb567fdc67051f @7b23fb2e82435013150e7cdc0f356be2f2320e63 @ff646ad7900e2a03abddce6f688f72cca87af136 中修复。

初始原因

全黑屏主要原因为irenderer扩展了getviewpos的接口而未在gkRendererGL330中实现。 然后还有很多GLES2,D3D9并行开发而放弃GL330渲染器所导致的问题。

解决方法

初步解决是将缺失的接口补全,但效果并不好。因为gl330使用的是和gles2共享的shader。而gles2已经改为全deferred lighting管线。因此,我花费了不少时间,直接将gles2和gl330渲染器合并。使用同一份代码,在API特例的位置,使用VirtualAPI封装或宏区隔的方式实现。提交在@a7185045c59ad5cf8a9eab2d61d19d4e3eaeac81 目前基本在iOS, OSX, Android上运行正常。

PS

有兴趣的同学可以围观 @osx_fix 分支的解决过程。 @GraphicGame