OpenGL vertext shader 属性设置
2019独角兽企业重金招聘Python工程师标准>>>
typedef struct _vertex{
GLfloat position[2];
GLfloat colors[4];
} Vertex; //定义顶点
GLfloat positions[NumVertices][2] = {
{ -0.90, -0.90 }, // Triangle 1
{ 0.85, -0.90 },
{ -0.90, 0.85 },
{ 0.90, -0.85 }, // Triangle 2
{ 0.90, 0.90 },
{ -0.85, 0.90 }
};
GLfloat colors[NumVertices][4] = {
{ 1.0, 0.0, 0.0, 1.0}, // Triangle 1
{ 1.0, 0.0, 0.0, 1.0},
{ 1.0, 0.0, 0.0, 1.0},
{ 1.0, 0.0, 0.0, 1.0}, // Triangle 2
{ 0.0, 1.0, 0.0, 1.0},
{ 0.0, 0.0, 1.0, 1.0}
};
Vertex vertexs[NumVertices];
for(int i=0;i<NumVertices;i++){
vertexs[i].position[0] = positions[i][0];
vertexs[i].position[1] = positions[i][1];
vertexs[i].colors[0] = colors[i][0];
vertexs[i].colors[1] = colors[i][1];
vertexs[i].colors[2] = colors[i][2];
vertexs[i].colors[3] = colors[i][3];
}
glGenBuffers(NumBuffers, Buffers);
glBindBuffer(GL_ARRAY_BUFFER, Buffers[ArrayBuffer]);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertexs),vertexs, GL_STATIC_DRAW);
GLuint prog = Program::Load( vert, frag );
glUseProgram( prog );
glEnableVertexAttribArray( 0 );
glVertexAttribPointer( 0, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), (GLvoid*) offsetof(Vertex, position));
// colors
glEnableVertexAttribArray( 1 );
glVertexAttribPointer( 1, 4, GL_FLOAT, GL_FALSE, sizeof(Vertex), (GLvoid*) offsetof(Vertex, colors));
这样,在vertex shader中就可以通过
attribute vec4 a_position;
attribute vec4 a_color;
来接收属性了。
转载于:https://my.oschina.net/yizhangxyz/blog/701692
OpenGL vertext shader 属性设置相关推荐
- Learn OpenGL(三)——顶点着色器(Vertext Shader)
顶点着色器是几个着色器中的一个, 它是可编程的. 现代OpenGL需要我们至少设置一个顶点着色器和一个片段着色器, 如果我们打算做渲染的话. 我们会简要介绍一下着色器以及配置两个非常简单的着色器来绘制 ...
- 【Modern OpenGL】Shader
Shaders 正如在上一篇教程中提到的,shader是在GPU中运行的小程序.如上一个教程中实现的最简单的vertex shader和fragment shader,一个shader基本上负责图形渲 ...
- OpenGL与shader区别(三十一)
一.OpenGL: Open Graphics Library -- 开放图形库 用于渲染2D.3D矢量图形的跨语言.跨平台的应用程序编程api.由近350个不同的函数调用组成,用来绘制从简单的图形到 ...
- Unity Shader 学习笔记(5)Shader变体、Shader属性定义技巧、自定义材质面板
写在之前 Shader变体.Shader属性定义技巧.自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用 ...
- android查看控件的xml属性,006 Android XML 控件属性设置技巧汇总
1.textview 组件文本实现替换(快速实现字符资源的调用) android 应用资源位置在 project(工程名)--->app--->res--->values 在stri ...
- pthread_create()之前的属性设置
一.pthread_create()之前的属性设置 1.线程属性设置 我们用pthread_create函数创建一个线程,在这个线程中,我们使用默认参数,即将该函数的第二个参数设为NULL.的确,对大 ...
- 列标题 如何删除gridcontrol_DEV控件GridControl常用属性设置(转)
1. 如何解决单击记录整行选中的问题 View->OptionsBehavior->EditorShowMode 设置为:Click 2. 如何新增一条记录 (1).gridView.Ad ...
- Android webview 写入cookie的解决方法以及一些属性设置
Android webview 写入cookie的解决方法以及一些属性设置 参考文章: (1)Android webview 写入cookie的解决方法以及一些属性设置 (2)https://www. ...
- Xamarin XAML语言教程使用使用Progress属性设置当前进度
Xamarin XAML语言教程使用使用Progress属性设置当前进度 开发者除了可以在XAML中使用Progress属性设置进度条的当前进度外,还可以在代码隐藏文件中使用Progress属性来设置 ...
最新文章
- python if判断字符串_python之条件判断、循环和字符串格式化
- 笔记6 | 从源码理解分析mScrollX和mScrollY,scrollTo()和scrollBy(),smoothScrollTo和smoothScrollBy...
- UVA - 11437 Triangle Fun(简单几何)
- Java Micro-Benchmarking:如何编写正确的基准
- 强大的jQuery图片查看器插件Viewer.js
- mysql 多实例 独立配置文件_三、安装配置多实例MYSQL5.6-多独立配置文件方法
- ACCESS的System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误
- endnote如何导入txt文件_python如何处理txt及excel文件
- ShadeGraph教程之节点详解2:Channel Nodes
- 查看linux系统版本,内核,CPU,MEM,位数的相关命令
- c语言运算符优先级表(c语言中各种运算符的优先级)
- linux 如何停止mysql,linux下如何启动/停止/重启mysql:
- python视频人脸检测_OpenCV + python 实现人脸检测(基于照片和视频进行检测)
- 投资高手三十年投资经验总结的18条真谛
- RGB的光的三原色、品红黄青颜料的三原色
- 学渣的刷题之旅 leetcode刷题 26. 删除排序数组中的重复项
- 你真正做到敏捷了吗?
- ansible常用模块 -- fial模块 -- 自定义消息失败
- 【爱生活】人生箴言 一
- pyqt5做了一个无线网连接器,与君共勉