`
javahigh1
  • 浏览: 1287689 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

关于怎么学习API (OpenGL/Direct3D等)

 
阅读更多
关于怎么学习API (OpenGL/Direct3D等)

-针对初学者

最近很多人在问,我该如何学习OpenGL?我学完了OpenGL了,该怎么用?
我想在回答这些类似的问题以前先和大家谈谈怎么学习API的方法,或许谈完了,我就不需要回答了。 
首先,我认为API是工具,不是本质,OpenGL/Direct3D的本质是图形学,而不是OpenGL/Direct3D的本身,API的本身只是一些Interface而已.如果你明白图形学的原理.那么你很容易这些接口的作用,以及为什么要有这些接口的存在.所以,我要说的第一点是:你要学习3D编程,不是学会了OpenGL/Direct3D就可以了。甚至会不会这些API都不是那么的重要(虽然这么说,或许很多人不太赞同).最重要的,最根本的是,你要明白这些API背后的图形学的原理---因为那才是根本中的根本.
下面我来介绍我对API学习的看法.
我认为API的学习有两种方法:一是正向学习.二是反向学习.
一:正向学习,所谓的正向学习,就是学习API的本身.我觉得这种方法是一种Brute Force行为.不是很好.我们只要看看API的特性,有那些部分.就可以了。比如学习Direct3D的时候,我们要知道它如何初始化,以及它和操作系统的结合.它在Direct3D8里引入了VS/PS.最后就是创建一个Direct3D应用的步骤和方法.这些就足够了。要不然.Direct3D那么多的函数,一个几十个参数。每一个都会要了我的命.
正向学习的第二个作用就是你在熟悉了图形学和大概了解了API后,有空就来看看API的细节,然后思索一下API里提供的一些特性对你的程序有什么作用.比如Direct3D里的Two Side Stencil.OpenGL里的TextureCombine等。

二:逆向学习.这是根本的方法,到了这一步,你就可以真正的算是图形学入门了。这要求你要有一定的图形学基础.比如,你现在开始做一个demo.你预计你的demo里有一堆眩眩的效果,当然你也要明白你的这些眩眩的效果要怎么实现的.然后你去找API里对应的功能,我想如果你的想法正常,一般的功能在Direct3D/OpenGL里应该都会有的.当然你也会碰到你想要的功能在这些API里没有,但是这不重要,重要的是你又学到新东西了---这个特性在XX API里不支持^_^.

通常我是采用先正向,再逆向,同时再进行正向学习的方法.希望以上的建议,对各位初学者有一定的帮助.

Stanly Lee Xheartblue.
潘李亮 心蓝
      2004-3-27.
MSN : xheartblue@etang.com

分享到:
评论

相关推荐

    OpenGL Direct3D 撰写的各种3D图形算法演示

    OpenGL和Direct3D是两种广泛使用的图形编程接口,它们允许开发者创建复杂的3D图形和实时渲染应用程序。在“OpenGL Direct3D 撰写的各种3D图形算法演示”中,我们可以期待深入理解这两种技术的核心原理以及如何利用...

    cnc-ddraw:GDI,OpenGL和Direct3D 9重新实现了适用于经典游戏的DirectDraw API,以更好地与Windows XP,Vista,7、8、10和Wine兼容

    GDI / OpenGL / Direct3D 9渲染器(具有自动渲染器选择) 通过GLSL着色器倍增- | 窗口模式/全屏独占模式/窗口全屏模式/全屏拉伸独占模式 Alt + Enter支持可在全屏和窗口模式之间快速切换 自动保存和恢复窗口位置/...

    Direct3D游戏编程入门教程

    Direct3D则是微软推出的API,随着DirectX版本的更新,Direct3D逐渐成为游戏开发中的主流选择,特别是在DirectX 8.0问世之后,Direct3D在某些方面超越了OpenGL。 Direct3D的难度主要在于它与C++编程语言和COM(组件...

    Direct3D/HLSL简单的介绍

    - **RenderMonkey**:一个专门用于开发和测试着色器程序的工具,支持Direct3D和OpenGL,可以帮助开发者直观地查看着色器的效果。 - **Visual Studio**:集成开发环境(IDE),支持多种语言的开发,包括HLSL,是进行...

    OpenGL图形API

    微软的Direct3D虽然也是十分优秀的图形API,但它只用于Windows系统。而OpenGL不仅用于 Windows,还可以用于Unix/Linux等其它系统,它甚至在大型计算机、各种专业计算机(如:医疗用显示设备)上都有应用。并且,...

    基于OPENGL/DIRECTX的虚拟场景软件

    - **绘图窗口创建**:使用Windows API创建应用程序窗口,并通过Direct3D初始化图形设备,为后续的渲染做好准备。 - **配置鼠标键盘输入设备**:通过DirectInput库,配置并获取输入设备的状态,实现用户对虚拟场景的...

    apitrace:跟踪OpenGL,Direct3D和其他图形API的工具

    将OpenGL,Direct3D和DirectDraw API调用跟踪到文件; 从文件重播OpenGL和Direct3D调用; 跟踪时在任何调用时检查OpenGL和Direct3D状态; 可视化和编辑跟踪文件。 有关更多详细信息,请参见。 状态 TL; DR:...

    unity3d opengl d3d显示demo

    在Unity3D中,开发者可以利用内置的图形渲染系统或者通过插件来实现自定义的图形渲染,比如使用OpenGL和Direct3D(简称D3D)这两个主流的图形API。OpenGL是一个开放源码、跨平台的图形库,而D3D是微软Windows平台上...

    Window Ce下Direct3D的应用开发(似乎可以用来写游戏哦)

    5. **开发环境与工具**:开发Windows CE上的Direct3D应用通常需要Visual Studio和Platform Builder等工具。Visual Studio用于编写和调试代码,而Platform Builder则用于构建和定制Windows CE操作系统映像。 6. **...

    as2.zip_3d_CSharp 3d_Direct 3D_csharp directx 3d_direct

    Direct3D是微软的图形应用程序接口(API),专为游戏开发和实时图形应用设计。它允许程序员直接控制硬件,提高3D图形的性能。Direct3D提供了大量的功能,包括顶点缓冲、纹理映射、光照模型、深度缓冲等,用于创建...

    direct3D截图

    8. **跨平台兼容性**:虽然Direct3D是Windows平台特有的,但可以通过一些库(如SlimDX、SharpDX等)在.NET环境中使用,或者通过开源项目(如Vulkan或OpenGL)在其他操作系统上实现类似的功能。 总的来说,Direct3D...

    DIrect3D(DirectX),OpenGL,OGRE 3D和Java 3D的比较

    尽管它的性能可能不如Direct3D或OpenGL,但它提供了一种更易于学习和使用的编程模型,适合教育和轻量级3D应用。 在性能方面,Direct3D 和 OpenGL 通常会提供更好的表现,因为它们更接近硬件。Java 3D 和 OGRE 3D ...

    OpenGL 4 API文档

    而另一种程序接口系统是仅用于Microsoft Windows上的Direct3D。OpenGL常用于CAD、虚拟现实、科学可视化程序和电子游戏开发。OpenGL的高效实现(利用了图形加速硬件)存在于Windows,部分UNIX平台和Mac OS。这些实现...

    基于opengl的3d魔方(irrlicht)

    首先,Irrlicht是一个开源的3D游戏引擎,它基于OpenGL和Direct3D渲染,提供了一套高效、易于使用的API,使得开发者可以快速构建3D应用。在本项目中,Irrlicht不仅负责渲染3D图形,还提供了用户输入处理、场景管理等...

    Direct3D游戏编程入门教程.pdf

    Direct3D与OpenGL都是3D图形编程领域内重要的API。OpenGL是一个开源的图形库,支持多种编程语言和多种操作系统,拥有广泛的支持者和资源,适合那些希望在多种平台上开发3D应用程序的开发者。Direct3D是微软开发的...

    基于SwiftShader基于CPU的OpenGL ES和Direct3D 9图形API的实现-Swift开发

    SwiftShader简介SwiftShader是Vulkan和OpenGL ES图形API的基于CPU的高性能实现。 其目标是为高级3D图形提供硬件独立性。 Bui SwiftShader简介SwiftShader是Vulkan和OpenGL ES图形API的基于CPU的高性能实现。 其目标...

    LLGL:低级图形库(LLGL)是现代图形API OpenGL,Direct3D,Vulkan和Metal的薄抽象层

    的OpenGL OpenGLES 3 金属 视窗 :check_mark: :check_mark: :check_mark: :check_mark: 不适用 不适用 GNU / Linux 不适用 不适用 :check_mark: :check_mark: 不适用 不适用 苹果系统 不适用 不适用...

    最简单的视音频播放示例 1.1

    本工程包含了使用各种API(Direct3D,OpenGL,GDI,DirectSound,SDL2)播放多媒体例子。 其中音频输入为PCM采样数据。输出至系统的声卡播放出来。 视频输入为YUV/RGB像素数据。输出至显示器上的一个窗口播放出来。 ...

Global site tag (gtag.js) - Google Analytics