【问题标题】:opengl basics on android?android上的opengl基础知识?
【发布时间】:2012-02-05 17:15:09
【问题描述】:

我一直在阅读教程,但我遇到了一些问题。

  1. 当确定某个对象/多边形的位置时,它们被存储为浮点数(多少像素宽是 1.0f)

  2. 当我用颜色深浅为多边形着色时,使用的方法是什么(即。

    // R, G, B, A 最终浮点数[] 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. 从仓位创建的缓冲区怎么样?更改是否应用于每帧步的缓冲区或直接向量位置?

【问题讨论】:

    标签: android opengl-es


    【解决方案1】:
    1. 视情况而定。如果您在现实世界中查看 3D 对象(例如您的房子),您的眼睛感知您的房子有多少“像素宽”取决于您离它有多远! 1.0f 是统一的,一个单一的单位。因此,无论您选择什么比例,1.0f 都是其中的一个单位。

    2. 如果您希望传入顶点数组,可以使用 glColor3f 或 glColor3vf。这也取决于您使用的是 OpenGL ES 1.1 还是 2。如果您想以十六进制指定您的值,您也可以使用 glColor4x,我认为它们甚至具有用于整数的 glColor3fi。看看你的 OpenGL 头文件(或者我猜是 .class 定义,因为这是你正在谈论的 Android/Java:android.opengl.GLU)+++

    3. 矩阵是浮点数的二维数组。当你将一个向量乘以一个矩阵时,你会得到一个变换后的向量。因此,您可以使用矩阵将向量(即对象方向和位置)从一个坐标系转换到另一个坐标系。例如,用于描述对象的局部坐标系可以转换为世界坐标系(对象存在于您的世界中的位置)。拥有局部坐标系很有用,因为它可以轻松地围绕自身旋转对象。当许多对象相互交互时,拥有世界坐标系很有用。您还可以转换为“相机”坐标系。就像我们现实世界中的每个对象在不同的​​摄像机角度视图中看起来是不同的一样,计算机也需要知道如何转换要在这些视图中呈现的对象。每个摄像机都定义了自己的变换矩阵,当对象的向量或顶点乘以所述矩阵时,结果是摄像机视图中的变换对象。略微简化。

    一些建议阅读:

    • Andre LaMothe 的 3D 游戏编程大师的技巧。它很老,谈论的是软件光栅化而不是硬件,但它会教你理解 3D 图形所需的所有数学知识,然后是一些。

    • 任何线性代数学术书籍

    • NeHe 游戏编程,google 一下


    +++注意: 出于您的目的,您定义颜色的方式在我看来您可能想要实例化一个浮点缓冲区,将这些颜色值存储在其中,并利用 glColorPointer 函数。

    【讨论】:

    • 是什么书我可以参考 android 编码?
    • 对于 3d 数学,我会参考上面的参考资料。如果你只想要 android 的 opengl es 并且对数学不太感兴趣,我说只是打一些网站。你不需要出去买一本书。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 2018-05-25
    • 2014-11-28
    相关资源
    最近更新 更多