opengl shader

1. shader define:
先简单的介绍shader,shader其实是显卡的功能,就是利用显卡的GPU去做图像处理的工作,而不是CPU,这样可以在一些复杂的大程序中释放CPU空间而提高效率。
2. shader type
1>.vertext shader:顶点着色器
2>.TEST Control shader
3>.TEST Evaluation shader
4>.Geometry Shader
5>.Fragment Shader:片段着色器
顶点:
uniform float CoolestTemp;
attribute float VertexTemp;
varying float Temperature;   写
片段:
uniform vec3 HottestColor;
varying float Temperature;  只读

application:
修改 attribute 值
获取 int a_vertex = renderHelper->getAttribLocation("VertexTemp");
glEnableVertexAttribArray(a_vertex) //允许设置
glVertexAttrib1f(a_vertex)       修改单个顶点设置   //glVertexAttribPointer(a_vertex)修改顶点数组设置
glDrawArrays(GL_TRIANGLES, 0, 3); //三角形
修改 uniform 值:
int u_index = renderHelper->getUniformLocation("CoolestTemp");
glUniform1f(u_color, 20.0); //修改

shader:
   //init  shader
 shaderId = _api->glCreateShader(shaderType);
 _api->glShaderSource(shaderId, 1, &s, NULL);
 _program = _api->glCreateProgram();
 _api->glAttachShader(_program, _vertexShader); //shaderId
    _api->glAttachShader(_program, _fragmentShader);
 _api->glGetShaderiv(handle, GL_COMPILE_STATUS, &success); //compile shader
    _api->glLinkProgram(_program);                            //link shader to program
 //render
 api->glGetAttribLocation();
 api->getUniformLocation("u_color");
 api->glUseProgram(_program);                            //use program
    api->glBindFramebuffer(GL_FRAMEBUFFER, _framebuffer);
 api->glViewport(0, 0, renderHelper->getWidth(), renderHelper->getHeight());
 api->glDisable(GL_DEPTH_TEST);
 api->glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
    api->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 api->glUniform3iv()
 api->glEnableVertexAttribArray(_aloc_position);
    api->glVertexAttribPointer(_aloc_position, 3, GL_FLOAT, GL_FALSE, 0, vertices);
    api->glDrawArrays(GL_TRIANGLES, 0, 6);
    api->glFlush(); //缓冲区数据
    api->glReadPixels(0, 0, renderHelper->getWidth(), renderHelper->getHeight(), renderHelper->getFormat(), GL_UNSIGNED_BYTE, output);  //read flush pixel

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值