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

原创 2004年06月01日 10:26:00
关于怎么学习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还是直接学习Direct3D?

查看: 11191|回复: 30    学习游戏开发,先学OpenGL再学Direct3D还是直接学习Direct3D? [复制链接]   ...
  • a237653639
  • a237653639
  • 2015年08月24日 17:22
  • 2245

我的Direct3D学习之路3:第一个3D绘图程序

之前已经详述过投影变换,这里不再赘述。 之前我们一直是在窗口中绘制,使用了D3DFVF_XYZRHW格式的顶点,D3D是默认顶点经过了处理,直接绘制在窗口上 现在我们用D3DFVF_XYZ格式来绘...
  • mao_xiao_feng
  • mao_xiao_feng
  • 2016年10月12日 13:47
  • 1350

Android OpenGL ES学习笔记之常用API

上一篇文章Android OpenGL ES学习笔记之绘制点涉及到了一些API,在这篇文章配合一些实例给大家详细的讲解下。 缓冲区 在OpenGL ES 中存在着三种缓冲区 - 颜色缓冲区 ...
  • qq_31530015
  • qq_31530015
  • 2016年08月10日 10:17
  • 1363

Direct3D原理与API参考(part1)

  • 2009年07月20日 20:29
  • 9.11MB
  • 下载

DirectX、Direct3D和OpenGL的区别

DirectX,(Direct eXtension,简称DX)是由微软公司创建的多媒体编程接口。由C++编程语言实现,遵循COM。     DirectX是由很多API组成的,按照性质分类,可以...
  • sprintwater
  • sprintwater
  • 2012年03月22日 17:11
  • 3472

Direct3D和openGL故事【转】

自1996年开始,3D API之战延续至今,并随着GPU程序的广泛应用而炮火渐希,淡出争论的焦点。如果非要论个输赢的话,应该是OpenGL绊倒了自己,以致大业未成。而OpenGL ES异军突起,反而要...
  • wag2765
  • wag2765
  • 2016年01月25日 16:25
  • 860

Direct3D 和 OpenGL真假全屏

全屏显示在Windows程序中,有不同的实现方法,有真全屏和假全屏之分,真全屏是将要显示的内容独占显示设备所有的全部资源,程序不加载窗外的框架。另一种是假全屏,实现的原理是调整要显示的内容的尺寸与位置...
  • pizi0475
  • pizi0475
  • 2011年03月23日 08:55
  • 4284

大学期间部分OpenGL或Direct3D程序截图

程序名称:太湖水场景的模拟研究            程序描述:基于Tessendorf的FFT水面模型来模拟水动画,参考Thilaka的算法自行设计了在GPU上实现FFT的算法,设计了GPU上实现...
  • caohongfei881
  • caohongfei881
  • 2012年10月09日 09:18
  • 1727

Direct3D vs. OpenGL: A Comparison

Summary This page is an informal attempt to summarize the main differences between SGI's OpenGL and...
  • pizi0475
  • pizi0475
  • 2012年09月23日 19:01
  • 968

精确测量Direct3D API调用(二)

测量Direct3D状态变化 Direct3D使用很多渲染状态来控制管线中的几乎所有方面。导致状态变化的APIs包含除DrawPrimitive之外的任何函数或者方法。   状态变化很复杂因为你不能...
  • zhanglei8893
  • zhanglei8893
  • 2013年10月03日 10:55
  • 1531
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于怎么学习API (OpenGL/Direct3D等)
举报原因:
原因补充:

(最多只允许输入30个字)