我在Android中学习OpenGL。在developer.android.com中,我可以看到一些示例项目。在这些示例中,使用了许多OpenGL函数。但是他们没有解释为什么叫他们?例如,在下面的snipet中,您可以看到使用某种编码类型的文本声明的字符串变量。但是在整个指导材料中,我无法找到为什么使用这个文本(特别是这个)?
private final String vertexShaderCode =
"attribute vec4 vPosition;" +
"void main() {" +
" gl_Position = vPosition;" +
"}";
private final String fragmentShaderCode =
"precision mediump float;" +
"uniform vec4 vColor;" +
"void main() {" +
" gl_FragColor = vColor;" +
"}";
同样在下面的snipet中,遵循一些程序编码。但我无处可寻找下面解释的程序。
public class Triangle() {
...
private final int mProgram;
public Triangle() {
...
int vertexShader = MyGLRenderer.loadShader(GLES20.GL_VERTEX_SHADER,
vertexShaderCode);
int fragmentShader = MyGLRenderer.loadShader(GLES20.GL_FRAGMENT_SHADER,
fragmentShaderCode);
// create empty OpenGL ES Program
mProgram = GLES20.glCreateProgram();
// add the vertex shader to program
GLES20.glAttachShader(mProgram, vertexShader);
// add the fragment shader to program
GLES20.glAttachShader(mProgram, fragmentShader);
// creates OpenGL ES program executables
GLES20.glLinkProgram(mProgram);
}
}
我知道这个developer.android.com指南适用于android开发。因此,如果我尝试在文档中提供的类解释中找到glAttachShader()
或glMatrixMode()
函数的解释,我会对它们给出的内容感到惊讶。看看吧。
glAttachShader
:
在API级别8中添加
void glAttachShader (int program, int shader)
参数
program
int
shader
int
glMatrixMode
:
在API级别4中添加
void glMatrixMode(int mode)
参数
mode
int
解释在哪里?我无法解释其中的任何一个。 或者是否有任何网站或材料来理解每个功能的目的只是在开发人员文档中列出?
请帮助我并指导我学习Android OpenGL的正确资料?除了示例项目之外,我无法使用代码(均值)不能单步执行。
答案 0 :(得分:0)
解释在哪里?
在OpenGL规范中。 OpenGL不是谷歌/ Android的发明,因此它们只会记录以何种方式访问由图形供应商联盟定义的内容。
可以在https://www.opengl.org/documentation/
找到授权文档然而,要了解真正发生的事情,你应该遵循像(官方)编程指南(又名红皮书)https://www.amazon.com/gp/product/0321773039/khongrou-20
这样的教程。或者其中一个非正式的教程,比如StackOverflow用户@NicolBolas的优秀工作,我在http://opengl.datenwolf.net/gltut/html/index.html反映了这一点。或者你选择http://www.opengl-tutorial.org/