当前位置:网站首页>初识OpenGL (2)编译着色器
初识OpenGL (2)编译着色器
2022-07-26 15:51:00 【thefist11】
step1. 创建一个着色器对象
用ID来引用,储存这个顶点着色器为unsigned int,
unsigned int vertexShader;
vertexShader = glCreateShader(GL_VERTEX_SHADER);
. glCreateShader 创建着色器。
参数: 着色器类型。eg. 顶点着色器,传递的参数是GL_VERTEX_SHADER。
step2. 把着色器源码附加到着色器对象上并编译
const char *vertexShaderSource = "#version 330 core\n"
"layout (location = 0) in vec3 aPos;\n"
"void main()\n"
"{\n"
" gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);\n"
"}\0";
glShaderSource(vertexShader, 1, &vertexShaderSource, NULL);
glCompileShader(vertexShader);
glShaderSource函数
第一个参数: 要编译的着色器对象。
第二参数: 指定了传递的源码字符串数量,这里只有一个。
第三个参数:顶点着色器真正的源码
第四个参数:先设置为NULL。
step3. 检测编译结果
检测调用glCompileShader后编译是否成功了,如果没成功的话,你还会希望知道错误是什么,这样你才能修复它们。检测编译时错误可以通过以下代码来实现:
int success;
char infoLog[512];
glGetShaderiv(vertexShader, GL_COMPILE_STATUS, &success);
首先我们定义一个整型变量来表示是否成功编译,还定义了一个储存错误消息(如果有的话)的容器。然后我们用glGetShaderiv检查是否编译成功。如果编译失败,我们会用glGetShaderInfoLog获取错误消息,然后打印它。
if(!success)
{
glGetShaderInfoLog(vertexShader, 512, NULL, infoLog);
std::cout << "ERROR::SHADER::VERTEX::COMPILATION_FAILED\n" << infoLog << std::endl;
}
如果编译的时候没有检测到任何错误,顶点着色器就被编译成功了
边栏推荐
- SAP ABAP Netweaver 容器化的一些前沿性研究工作分享
- 2022 what is your sense of security? Volvo asked in the middle of the year
- Teach the big model to skip the "useless" layer and improve the reasoning speed × 3. The performance remains unchanged, and the new method of Google MIT is popular
- FTP协议
- 如何通过ETL调度工具 TASKCTL 使用作业插件类型调用 kettle作业?
- 基于SSM开发实现校园疫情防控管理系统
- 马斯克被曝绿了谷歌创始人:导致挚友二婚破裂,曾下跪求原谅
- Gcc/g++ and dynamic and static libraries and GDB
- Encryption model
- PS + PL heterogeneous multicore case development manual for Ti C6000 tms320c6678 DSP + zynq-7045 (2)
猜你喜欢

13 years of senior developers share a year of learning rust experience: from the necessary bibliography to code practice
FTP协议

Parker solenoid valve d1vw020dnypz5

hawe螺旋插装式单向阀RK4
“卡片笔记法”在思源的具体实践案例

Bucher gear pump qx81-400r301

OSPF综合实验

“核弹级” Log4j 漏洞仍普遍存在,并造成持续影响

换把人体工学椅,缓解久坐写代码的老腰吧~
![[expdp export data] expdp exports a table with 23 rows of records and no lob field. It takes 48 minutes. Please help us have a look](/img/ee/7bec8211dddc90e52c2bc0f56c8dd4.png)
[expdp export data] expdp exports a table with 23 rows of records and no lob field. It takes 48 minutes. Please help us have a look
随机推荐
反射、枚举以及lambda表达式
绘制漂亮的中学操场轮廓,生成带经纬度数据
教大模型自己跳过“无用”层,推理速度×3性能不变,谷歌MIT这个新方法火了...
Daily1:SVM
# 工欲善其事必先利其器-C语言拓展--嵌入式C语言(十一)
Specific practice cases of "card note taking method" in Siyuan
Understanding weight sharing in convolutional neural networks
ES6 advanced - query commodity cases
PS + PL heterogeneous multicore case development manual for Ti C6000 tms320c6678 DSP + zynq-7045 (2)
Development and implementation of campus epidemic prevention and control management system based on SSM
一文搞懂│XSS攻击、SQL注入、CSRF攻击、DDOS攻击、DNS劫持
Clojure 运行原理之编译器剖析
HaWe screw cartridge check valve RK4
认识JS基础与浏览器引擎
全志A40i工业核心板,100%国产4核ARM Cortex-A7,支持“双屏异显”【显示接口能力,工业HMI首选方案】
German EMG e-anji thruster ed301/6 HS
使用 ClojureScript 开发浏览器插件的过程与收获
开发日常小结(11):文件上传功能改进:中文字符检测与文本内容处理
中金财富炒股安全吗 手续费最便宜的证券公司
Delta controller rmc200