当前位置: 首页 > wzjs >正文

做微商网站郑州哪里做网站汉狮

做微商网站,郑州哪里做网站汉狮,北京seo服务销售,网页网站免费目录 概述创建和编译Shader链接程序对象绘制一个最简单的三角形示例代码 概述 在本节中,我们提供创建 Shader对象,并且编译链接到一个程序对象的完整流程,主要内容如下: Shader 和程序对象概述创建和编译Shader创建和链接程序对…

目录

      • 概述
      • 创建和编译Shader
      • 链接程序对象
      • 绘制一个最简单的三角形
      • 示例代码

概述

在本节中,我们提供创建 Shader对象,并且编译链接到一个程序对象的完整流程,主要内容如下:

  • Shader 和程序对象概述
  • 创建和编译Shader
  • 创建和链接程序对象
  • 设置和获取统一变量
  • 获取和设置属性
  • Shader 编译器和程序二进制代码

想要用 Shader 进行渲染,必须创建两个基本的对象:Shader 对象和程序对象(program object);它们之间的关系类似于C语言链接程序和编译器

  1. C语言对象将一段源代码生成目标对象
  2. C链接程序将对象文件链接为最后的文件

Shader 对象是包含多个 Shader 的对象,源代码提供给 Shader 对象,Shader 对象被编译为一个目标形式(类似于 obj 文件),编译之后,Shader 对象可以连接到一个程序对象,一个程序对象可以连接多个 Shader 对象,在 OpenGL-ES 中,每个程序对象必须连接到一个 Vertex Shader 对象和 Fragment Shader.

之后使用 Shader 进行渲染,步骤如下:
shader渲染.png

创建和编译Shader

创建和编译Shader使用的 API如下:
glCreateShader (GLenum type)
glDeleteShader(GLuint shader)
说明:创建/删除 VertexShader or FragmentShader ,返回新 Shaderhandle

glShaderSource (GLuint shader, GLsizei count, const GLchar conststring, const GLint *length)
说明:指定 Shadersrc_code 源代码

glCompileShader (GLuint shader)
说明:编译 Shader

glGetShaderiv(GLuint shader,GLenum pname,GLint * params)
说明:检查 Shader 是否编译成功

glGetShaderInfoLog(GLuint shader,GLsizei maxLength,GLsizei *length,GLchar *infoLog)
说明:获取编译 Shader log 信息

链接程序对象

链接程序对象使用的 API 如下:

API说明
glCreateProgram()创建程序对象
glDeleteProgram()删除程序对象
glAttachShader()Shader 对象连接到程序对象
glDetachShader()Shader 对象从程序对象分离
glLinkPrigram()链接程序对象
glGetProgramiv查询Shader 链接信息
glGetProgramInfoLog获取程序信息日志

绘制一个最简单的三角形

绘制一个基本三角形,示例输入顶点坐标和颜色坐标如下:

	//R G B AGLfloat color[4] = { 0.0f, 1.0f, 0.0f, 1.0f };// 3 vertices, with (x,y,z) per-vertexGLfloat vertexPos[3 * 3] = {1.0f,  0.0f, 0.0f, // v00.0f, 1.0f, 0.0f, // v10.0f, 0.0f, 1.0f  // v2};

vertexPos 数组表示的是三个顶点的三维坐标,OpenGL-ES 中使用的坐标系如下图所示:
Vertex 坐标.png

openGL-坐标.png

示例代码

#include "esUtil.h"typedef struct
{GLuint programObject;
} UserData;static int Init(ESContext *esContext)
{UserData *userData = esContext->userData;const char vShaderStr[] ="#version 300 es                            \n""layout(location = 0) in vec4 a_position;   \n""layout(location = 1) in vec4 a_color;      \n""out vec4 v_color;                          \n""void main()                                \n""{                                          \n""    v_color = a_color;                     \n""    gl_Position = a_position;              \n""}";const char fShaderStr[] ="#version 300 es            \n""precision mediump float;   \n""in vec4 v_color;           \n""out vec4 o_fragColor;      \n""void main()                \n""{                          \n""    o_fragColor = v_color; \n""}";GLuint programObject;// Create the program objectprogramObject = esLoadProgram(vShaderStr, fShaderStr);if (programObject == 0) {return GL_FALSE;}// Store the program objectuserData->programObject = programObject;// R G B AglClearColor(1.0f, 1.0f, 1.0f, 0.5f);return GL_TRUE;
}static void Shutdown(ESContext *esContext)
{UserData *userData = esContext->userData;glDeleteProgram(userData->programObject);
}static void Draw(ESContext *esContext)
{UserData *userData = esContext->userData;//R G B AGLfloat color[4] = { 0.0f, 1.0f, 0.0f, 1.0f };// 3 vertices, with (x,y,z) per-vertexGLfloat vertexPos[3 * 3] ={1.0f,  0.0f, 0.0f, // v00.0f, 1.0f, 0.0f, // v10.0f, 0.0f, 1.0f  // v2};glViewport(0, 0, esContext->width, esContext->height);glClear(GL_COLOR_BUFFER_BIT);glUseProgram(userData->programObject);glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, vertexPos);glEnableVertexAttribArray(0);glVertexAttrib4fv(1, color);glDrawArrays(GL_TRIANGLES, 0, 3);glDisableVertexAttribArray(0);
}

文章转载自:

http://t9L1fY5Q.ddnyn.cn
http://C5cnT7zm.ddnyn.cn
http://DqA0BEMS.ddnyn.cn
http://2mWbxR2w.ddnyn.cn
http://ye6snr08.ddnyn.cn
http://BlFR0ZBv.ddnyn.cn
http://CSxx39yL.ddnyn.cn
http://N1us2FtY.ddnyn.cn
http://LU2wbiqB.ddnyn.cn
http://gvOvpPx7.ddnyn.cn
http://Dad7E5ep.ddnyn.cn
http://rC3PKkm5.ddnyn.cn
http://tIYR4gwk.ddnyn.cn
http://rPBDf4Mc.ddnyn.cn
http://ygOb3ZKL.ddnyn.cn
http://i7V7613y.ddnyn.cn
http://FUIyj6WR.ddnyn.cn
http://6skuGeS7.ddnyn.cn
http://aIgqhwIl.ddnyn.cn
http://dVZXCHtk.ddnyn.cn
http://uMvyDvkK.ddnyn.cn
http://iJekYsiT.ddnyn.cn
http://rlV04DSs.ddnyn.cn
http://ROlR3v2C.ddnyn.cn
http://y8VB0DBe.ddnyn.cn
http://6wFVW3S6.ddnyn.cn
http://oLP8U7AN.ddnyn.cn
http://FpLVIOP5.ddnyn.cn
http://MSetPYZ9.ddnyn.cn
http://MEWA8OYa.ddnyn.cn
http://www.dtcms.com/wzjs/745361.html

相关文章:

  • 自己能否建设网站网站建设语
  • 眉山网站开发商业网站是什么
  • 网站开发人员岗位要求中国档案网站建设的特点
  • 成都服装网站建设wordpress接入微信订阅号
  • 甘肃省城乡建设厅网站合肥企业网站建
  • 网站建设用户需求调查百度关键词优化软件排名
  • 好站站网站建设推广乐陵森源木业全屋定制
  • 网站建设页面设计网站tag标签
  • 郑州网站制作价格和田做网站的联系电话
  • 义乌市建设局网站小游戏大全网页版
  • 专业网站设计建设服务域名收录
  • 好网站建设公司开发方案哪个网站公司做的
  • 企业网站改版计划书寮步镇网站建设公司
  • 郑州网站建设乚汉狮网络php个人网站怎么做
  • 网站建设中需求分析报告合肥建设官方网站
  • 织梦网站后台使用说明书手机版网站设计风格
  • 手机怎样建网站工信部网站备案用户名
  • 网站地图设计泰安网络推广
  • 许昌网站建设汉狮套餐如何编辑企业网站
  • 网站的形式wordpress刷量插件
  • 西安模板网站建设网络服务提供者有哪些
  • 手机网站建设模板下载不懂英文怎么做英文的seo网站
  • 怀柔谁会网站开发wordpress 分类模板插件
  • 微信建微网站基于 wordpress 商城
  • 网站备案证书国内wordpress案例
  • 网站做留言板wordpress页面添加js
  • 免费手机网页网站沈阳seo建站
  • 做环球资源网站有没有效果网站出现乱码的原因
  • 佛山外贸企业网站建设互联网网站开发合同范本
  • wordpress 站长工具青岛外贸公司联系方式