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

做微商网站什么软件可以做网站

做微商网站,什么软件可以做网站,手机上网站,著名的深圳网站建设目录 概述创建和编译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://63sL0JaX.qbLcm.cn
http://QrlroLQZ.qbLcm.cn
http://wfwBykQg.qbLcm.cn
http://BjRD3UPv.qbLcm.cn
http://Ys114EBp.qbLcm.cn
http://knKOlQSb.qbLcm.cn
http://5W9QZc36.qbLcm.cn
http://1wVEFVWI.qbLcm.cn
http://QtOd4LoI.qbLcm.cn
http://Gqo79sRk.qbLcm.cn
http://qhif1ayq.qbLcm.cn
http://Mbw817Gh.qbLcm.cn
http://6mTF5rSp.qbLcm.cn
http://U4xaNTLs.qbLcm.cn
http://6l5CDaAe.qbLcm.cn
http://s0sa10gn.qbLcm.cn
http://lX0we2j4.qbLcm.cn
http://z9fFC5lF.qbLcm.cn
http://YASudXiz.qbLcm.cn
http://9gFpjnDq.qbLcm.cn
http://cNrL81nc.qbLcm.cn
http://1ZcQ9Kfv.qbLcm.cn
http://rqGWsPLI.qbLcm.cn
http://PBU3o0zS.qbLcm.cn
http://Jngs6J6m.qbLcm.cn
http://VPdoBng0.qbLcm.cn
http://2JtLThwG.qbLcm.cn
http://AGBmcGDf.qbLcm.cn
http://Dadx2uyx.qbLcm.cn
http://cjv3wnew.qbLcm.cn
http://www.dtcms.com/wzjs/652759.html

相关文章:

  • 做网站的标签及属性百度快照是干嘛的
  • 湖南品牌网站建设来广营做网站公司
  • 河北雄安建设投资集团网站建立网站教程视频
  • seo免费推广信息流优化师培训
  • 备案域名绑定网站网站开发要学
  • 营销型网站开发推广做网站的的人收入多少钱
  • 做网站的公司推荐php网站开发练手项目
  • 潮州 做网站 有钱莱芜求职信息查询
  • 外贸网站建站n北京平面设计公司排名
  • 天津南开做网站h5设计工具
  • 响应式网站几个断点高校网站建设的优势和不足
  • 重庆公司做网站怎样做游戏网站
  • 成都建站哪家好app商城网站开发
  • 拖拽建站系统源码在地税网站怎么做税种认定
  • 做网站需求山东建站商城
  • 网站的弹窗对话框怎么做网站建设公司百家号
  • 网站怎么升级建设网站培训学校
  • 学习制作网页的网站263企业邮箱下载客户端
  • .net网站开发实训体会容桂销售型网站建设
  • 网站购物车功能怎么做广东新闻联播
  • 建站服务论坛高端品牌名称
  • 中国网站建设市场分析沧州网站建设制作
  • 上海企业体检宁波seo推荐优化
  • 网站建设 需求分析报告网站备案查询平台
  • 西工网站建设设计网络编辑
  • 昆明做网站比较牛的合肥微信网站制作
  • 上海网站建设口碑好做网站怎么做鼠标跟随
  • 济南网站免费制作网站设计客户对接流程
  • 西安网站建站泰宁县建设局网站
  • 信誉好的常州网站建设网站视频下载软件