Opegl随笔

Opengl Demo建立的一般流程为:

1,新建GLSurfaceView 并设为界面为它

 glSurfaceView = new GLSurfaceView(this);
  glSurfaceView.setEGLContextClientVersion(2);//漏了写这个会没显示
  glSurfaceView.setRenderer(new FreeStyleRenderer(this));
//  glSurfaceView.setRenderer(new AirHockeyRender(this));
  setContentView(glSurfaceView);


2,初始化FloatBuffer变量 用于存储本地数据 floatBuffer的大小由坐标的多少决定
vertexData = ByteBuffer.allocateDirect(tableVerticesWithTriangles.length * BYTES_PER_FLOAT).order(ByteOrder.nativeOrder()).asFloatBuffer();
vertexData.put(tableVerticesWithTriangles);

3,读取着色器内容
String vertexTxt = TextResourceReader.readTextFileFromResource(context, R.raw.vertex_shapder);
String fragTxt = TextResourceReader.readTextFileFromResource(context, R.raw.frag_shapder);

4,编译着色器
//compileShapder
int vertexShapder = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(vertexShapder, vertexTxt);
glCompileShader(vertexShapder);
int fragShapder = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(fragShapder, fragTxt);
glCompileShader(fragShapder);

5,链接并使用程序
int program = glCreateProgram();
glAttachShader(program, vertexShapder);
glAttachShader(program, fragShapder);
glLinkProgram(program);
//use program
glUseProgram(program);

6,获取属性的位置
//attribute的引用
aPositionLocation = glGetAttribLocation(program, A_POSITION);
uColorLocation = glGetUniformLocation(program, U_COLOR);

7,关联属性以及自定义的数据
vertexData.position(0);
glVertexAttribPointer(aPositionLocation, POSITION_COMPONENT_COUNT, GL_FLOAT, false, 0, vertexData);
glEnableVertexAttribArray(aPositionLocation);

8,在onDrawFrame中绘制
glClear(GL_COLOR_BUFFER_BIT);
glUniform4f(uColorLocation,0.5f,0.8f,0.5f,1.0f);
glDrawArrays(GL_TRIANGLES,0,6);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值