opengl

初识

简单shader

#version 430 core
#version 300 es

基本流程

接口

glew

变量

  • glGetUniformLocation

vao vbo ebo fbo

  • glEnableVertexAttribArray
  • glVertexAttribPointer
  • glDisableVertexAttribArray
  • glGenVertexArrays
  • glBindVertexArray
  • glGenBuffers
  • glBindBuffer
  • glBufferData
  • glGenFramebuffers
  • glBindFramebuffer
// vao
GLuint vaoid;
glGenVertexArrays(1, &vaoid);
glBindVertexArray(vaoid);
glBindVertexArray(0);
glDeleteVertexArrays(1, &vaoid);

// vbo
GLuint vboid[2];
glGenBuffers(2, vboid);
glBindBuffer(GL_ARRAY_BUFFER, vboid[0]);
glBufferData(GL_ARRAY_BUFFER, sizeof(vVertices), vVertices, GL_STATIC_DRAW);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, vboid[1]);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
glDeleteBuffers(2, vboid);

// fbo
GLint defaultFramebufferid = 0;
glGetIntegerv ( GL_FRAMEBUFFER_BINDING, &defaultFramebufferid );
GLuint fboid;
glGenFramebuffers(1, &fboid);
glBindFramebuffer(GL_FRAMEBUFFER, fboid);
glFramebufferTexture2D();
glBindFramebuffer(GL_FRAMEBUFFER, defaultFramebufferid);
glDeleteFramebuffers(1, &fboid);

纹理

  • glGenTextures             生成多个纹理id
  • glDeleteTextures         删除多个纹理id
  • glBindTexture              设置当前纹理id
  • glTexParameteri          当前纹理设置参数int
  • glTexParameteriv        当前纹理设置参数int (多个)
  • glTexParameterf         当前纹理设置参数float
  • glTexParameterfv       当前纹理设置参数float(多个)
  • glTexImage2D            将数据传到纹理
  • glActiveTexture
  • glBindTexture
  • glUniform1i
  • glUniform1iv
  • glUniform1f
  • glUniform1fv

绘制

  • glDrawElements
  • glReadPixels

shader

  • glCreateShader     创建一个空的shader
  • glCompileShader
  • glAttachShader
  • glDetachShader
  • glDeleteShader
  • glShaderSource
  • glGetShaderiv
  • glGetShaderInfoLog

Program

  • glCreateProgram
  • glLinkProgram
  • glDeleteProgram
  • glGetProgramiv
  • glGetProgramInfoLog
  • glGetUniformLocation

shader语法

变量类型

float double int uint bool 结构体

vec2 vec3 vec4 dvec2 ivec2 uvec2 bvec2 mat2 dmat2 float[3] 都有length方法

后缀u/U,f/F,LF,int(1.0)

xyzw,rgba,stpq

存储限制符

const\in\out\uniform\buffer\shared

精度

精度级别:highp mediump lowp

默认精度:precision mediump float;

注意

查询uniform地址不要求你之前使用过着色器程序,但是更新一个uniform之前你必须先使用程序(调用glUseProgram)

opengl版本大于等于3.1,顶点着色器和片元着色器必不可少,固定功能管线从核心模式中去除

下载

opengl es 模拟器

参考

OpenGL着色器(Shader)和GLSL语言的简单介绍

OpenGL着色语言GLSL中文手册

OpenGL API4 介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值