我一直在阅读教程,但我遇到了一些问题。
当制作某个对象/多边形的位置时,它们存储为浮点数(宽度为1.0f的像素数)
当我使用颜色阴影为多边形着色时,使用的方法是什么(即
// R,G,B,A
final float [] cubeColorData =
{
//正面(红色)
1.0f,0.0f,0.0f,1.0f,
1.0f,0.0f,0.0f,1.0f,
1.0f,0.0f,0.0f,1.0f,
1.0f,0.0f,0.0f,1.0f,
1.0f,0.0f,0.0f,1.0f,
1.0f,0.0f,0.0f,1.0f,
// Right face (green)
0.0f, 1.0f, 0.0f, 1.0f,
0.0f, 1.0f, 0.0f, 1.0f,
0.0f, 1.0f, 0.0f, 1.0f,
0.0f, 1.0f, 0.0f, 1.0f,
0.0f, 1.0f, 0.0f, 1.0f,
0.0f, 1.0f, 0.0f, 1.0f,
3.什么是矩阵及其目的? 4.从这些职位创建的缓冲区怎么样?是否在每个帧步骤或直接向量位置上应用了缓冲区?
答案 0 :(得分:2)
取决于。如果您在现实世界中查看3D物体 - 例如您的房子 - 您的眼睛感知到的房子有多少“像素宽”取决于您与它的距离! 1.0f是统一的,单个单位。所以无论你选择什么样的规模,1.0f都只是一个单位。
如果要传入顶点数组,可以使用glColor3f或glColor3vf。这也取决于你是否使用OpenGL ES 1.1或2.如果你想用Hex指定你的值,我也可以使用glColor4x,我认为它们甚至还有glColor3fi用于整数。看看你的OpenGL头文件(或者我猜.class定义,因为这是你正在谈论的Android / Java:android.opengl.GLU)+++
矩阵是浮动的二维数组。将矢量乘以矩阵时,可以得到变换后的矢量。因此,您可以使用矩阵将矢量(对象方向和位置)从一个坐标系转换为另一个坐标系。例如,用于描述对象的局部坐标系可以转换为世界坐标系(对象存在于您的世界中)。拥有局部坐标系非常有用,因为它可以轻松地围绕自身旋转对象。当许多对象彼此交互时,具有世界坐标系是有用的。您也可以转换为“相机”坐标系。就像我们现实世界中的每个对象看起来与各种摄像机角度视图看起来不同一样,计算机也需要知道如何变换要在这些视图中呈现的对象。每个摄像机将定义其自己的变换矩阵,并且当对象的矢量或顶点乘以所述矩阵时,结果是摄像机视图中的变换对象。轻微简化。
有人建议阅读:
Andre LaMothe的3D游戏编程大师的诀窍。它已经陈旧并谈论软件光栅化而不是硬件,但它会教你理解3D图形所需的所有数学,然后是一些。
任何线性代数学术书籍
NeHe Game Programming,只是google it
+++注: 为了您的目的,您定义颜色的方式,它看起来像您可能想要实例化浮动缓冲区,将这些颜色值存储在其中,并使用glColorPointer函数。