java - OpenGL es 2. Java for Android 中的顶点

标签 java android opengl-es

我正在关注this教程,学习 OpenGL es 2.0。 这些信息(加上许多其他教程)让我意识到:顶点必须在数组中声明,该数组必须通过 FloatBuffer 操作发送到 GPU 内存,openGL 必须从那里拾取它们。 接下来的内容对我来说有点晦涩难懂。问题是:一旦顶点存在(在 GPU 内存中),java 程序的哪一部分将用来获取这些数据?着色器和 fragment 代码? vertexattrib 数组命令?

最佳答案

OpenGL 在非常基础的层面上工作,在您发出绘制调用(例如 glDrawArraysglDrawElements)之前,不会发生太多事情。大多数其他调用只是设置绘制调用将使用的状态。状态最重要的部分是您已经看到的:

  • glVertexAttribArray 和相关调用用于指定用于绘制调用的顶点数据。
  • glUseProgram,以及之前用于构建程序的所有调用,指定将为您的绘制调用运行哪些着色器。

一旦您设置了所有这些状态并发出绘制调用,您就可以启动整个机器。如果您想了解这里发生的所有事情的详细信息,您应该能够通过“OpenGL 渲染管道”等搜索词或在任何 OpenGL 书籍中找到好的 Material 。大致来说,主要步骤如下:

  • 固定功能单元根据您使用 glVertexAttribArray 设置的状态和相关调用来获取顶点数据,并将该数据提供给顶点着色器。
  • 您设置的顶点着色器在其属性变量中接收此顶点数据,并对其进行处理。
  • 顶点着色器生成的经过处理的顶点由固定功能单元进行光栅化,该单元决定需要渲染哪些像素。
  • 这些像素(又名 fragment )被输入 fragment 着色器。
  • 您设置的 fragment 着色器会处理这些 fragment ,并输出 fragment 的颜色。
  • fragment 着色器生成的颜色将写入帧缓冲区。

它的内容比我在这里列出的要多,但我希望这能帮助您了解基础知识。

关于java - OpenGL es 2. Java for Android 中的顶点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23458196/

相关文章:

java - 专门用于下载图像和文件的网络爬虫

java - 为什么我不能将参数传递给 toString() 方法以及为什么它给出 null?

android - 是否可以为Android手机编写一个wifi破解工具?监控模式与多播?

android - openGLES 骨骼动画解决方案的方法

iphone - opengl 1.1 在启动时搞砸了(随机)

ios - 将 4x4 矩阵传递给 glUniformMatrix4fv

java - 自定义 WebDriver 无法与 Selenium Actions 方法交互

android - 如何为 SeekBar 背景创建可绘制的图层列表?

java - 在后台启动 Activity

Java、静态方法绑定(bind)和泛型都包含一些方法重载