要实现OpenGL,还要先弄明白OpenGL的原语及3D的一些原理
OpenGL提供访问几何和图行原语、显示序列、模型转换、灯光、纹理、反锯齿、混合等。可以先看看3Dmax的书,对3D有个大概的认识。
3D图形原语:
Vertex (顶点)是3D的最基本的概念,它定义了三维(3D)空间的一个点的坐标(x,y,z),通常定义为浮点变量。三个Vertex(V1, ,V2, V3)就构造了一个三角形.两个vertex就能构造一条线段。OpenGL可以画线段、三角形和四边形,而OpenGL ES 2.0只能画三角形和线段。
3D Mesh(网格)
3D mesh可以用Blender, 3D Studio Max, Maya, Lightwave 3D等3D制作软件创建。比如 Lightwave 3D生成的obj文件
格式如下:
####
#
#OBJ File Generated by LightWave3D
#LightWave3D OBJ Export v2.2
#
####
#Object: 1
#
# Vertices: 5
# Points: 1
# Lines: 0
# Faces: 6
# Materials: 1
#
####
o 1
# Vertex list
v -0.5 -0.5 0.5
v -0.5 -0.5 -0.5
v 0.5 -0.5 0.5
v 0.5 -0.5 -0.5
v 0 0.5 0
# Point/Line/Face list
f 5 2 1
f 2 3 1
f 2 4 3
f 5 4 2
f 3 5 1
f 4 5 3
# End of file
上面文件代表一个棱锥, 有5个顶点和6个面(三角形):
•第一部分代表总的3D mesh信息.。并声明顶点和面(三角形)的个数
•下一部分:
# Vertex list
v -0.5 -0.5 0.5
v字符代表顶点(vertex). 由三个坐标(x,y,z)构成, 分别是-0.5, -0.5, 0.5
•最后一部分是关于怎样创建三角形的
# Point/Line/Face list
f 5 2 1
f字符代表面(face),实际上是三角形后面的数字表述是构成三角形的点的序号(第5个,第2个。第1个点)
纹理(Textures)
另: 要看懂OpenGL的API,《3D数学基础 图形与游戏开发》这本书是必须看的