OpenGL、Direct3D、Vulkan都是图形api,能实现的功能上并没有多少不同。现在的游戏引擎都是同时支持多种api。目前openGL已经停止更新了,后续将被vulkan代替。openGL开发很蛋疼的是驱动bug多,而且各家的bug还不一样。
-
1 -
3NetFly ,Engine Programmer
VR的话,你们更多研究的应该是Value的OpenVR吧..或者可以考虑直接选择一款游戏引擎来做..比如Unreal/Unity/Cocos等...如果是自研引擎或者涉及硬件/SDK/Runtime之类的就另说了...
在这里再简单说下OpenGL 。。。OpenGL到底是什么玩意?一般它被认为是一个API(Application Programming Interface, 应用程序编程接口),包含了一系列可以操作图形、图像的函数。然而,OpenGL本身并不是一个API,它仅仅是一个由Khronos组织制定并维护的规范..
OpenGL规范严格规定了每个函数该如何执行,以及它们的输出值。至于内部具体每个函数是如何实现(Implement)的,将由OpenGL库的开发者自行决定(这里开发者是指编写OpenGL库的人)。因为OpenGL规范并没有规定实现的细节,具体的OpenGL库允许使用不同的实现,只要其功能和结果与规范相匹配(作为用户不会感受到功能上的差异)。
实际的OpenGL库的开发者通常是显卡的生产商。你购买的显卡所支持的OpenGL版本都为这个系列的显卡专门开发的。当你使用Apple系统的时候,OpenGL库是由Apple自身维护的。在Linux下,有显卡生产商提供的OpenGL库,也有一些爱好者改编的版本。这也意味着任何时候OpenGL库表现的行为与规范规定的不一致时,基本都是库的开发者留下的bug。OpenGL自身是一个巨大的状态机(State Machine):一系列的变量描述OpenGL此刻应当如何运行。OpenGL的状态通常被称为OpenGL上下文(Context)。我们通常使用如下途径去更改OpenGL状态:设置选项,操作缓冲。最后,我们使用当前OpenGL上下文来渲染。
假设当我们想告诉OpenGL去画线段而不是三角形的时候,我们通过改变一些上下文变量来改变OpenGL状态,从而告诉OpenGL如何去绘图。一旦我们改变了OpenGL的状态为绘制线段,下一个绘制命令就会画出线段而不是三角形。
当使用OpenGL的时候,我们会遇到一些状态设置函数(State-changing Function),这类函数将会改变上下文。以及状态应用函数(State-using Function),这类函数会根据当前OpenGL的状态执行一些操作。只要你记住OpenGL本质上是个大状态机,就能更容易理解它的大部分特性。最后简单总结下 OpenGL是一个图形规范,并不是一个独立的平台,它需要一个编程语言来工作 主要来说就是Cpp...一般使用GL的地方也就是图形渲染方面:)
-
1琪露诺 ,游戏喜好偏软。
Highwind 赞同维基百科:https://zh.wikipedia.org/wiki/OpenGL
从道理上说,OpenGL是一套跨平台的图形API。传统上写一些图形代码,在屏幕上绘图,或者调用硬件的图形加速功能都是需要在硬件驱动的层面上操作的,而OpenGL提供了一些比较上层的接口,让开发人员不需要关注底层的驱动,能够以更加普遍的方式去写图形程序。
在游戏领域更有名的d3d,就是和OpenGL属于同一层级的东西——比硬件驱动要高,提供一些绘图相关的功能和接口,但是算不上高度抽象和集成的“游戏引擎”。
如果直接用OpenGL开发,自己见到的C++比较多,也有Java吧。可以搜索“OpenGL教程”,或者“OpenGL范例”,有很多例子可以直接参考的。如果找一门计算机图形学的在线公开课,用的例子很多时候也是OpenGL。如果是个人项目、学校项目这类规模并不大的,应该够用了吧。
-
0 -
登录奶牛关账号即可参与讨论
{{question['follower_count']}} 个玩家关注
相关元素
相关问题
Resident Evil 7在VR上的表现如何?8人关注 4个回答
VR 游戏是否适合像黑暗之魂那样的动作游戏?11人关注 8个回答
如何从游戏产业的角度评价 Microsoft Hololens?6人关注 3个回答
OpenGL是一种什么样的技术?
0 条评论