OpenGL —— 2.2、Shader之间数据传输、向Shder传输数据

Shader

     OpenGL着色器(shader)是一种用于编写图形渲染代码的编程语言。它们在图形处理单元(GPU)上运行,用于控制渲染管线的不同阶段。

     在OpenGL中,有两种主要类型的着色器:顶点着色器和片段着色器。
          顶点着色器(Vertex Shader)负责处理输入的顶点坐标,并对它们进行变换和变换相关的计算。它通常用于将3D模型从称为模型空间转换为屏幕空间。
          片段着色器(Fragment Shader)负责计算像素的最终颜色值。它通常用于对每个像素进行光照计算、纹理采样和其他图像处理操作。

     GLSL是一种强类型语言,所有的变量都必须事先声明,并且要给出变量的类型。

Shader之间数据传输

     如下图。vertexShader.glsl的vertexColors作为fragmentShader.glsl的vertexColors的输入。

在这里插入图片描述

向Shder传输数据

如下代码基于 OpenGL —— 2、绘制第一个三角形(附源码,glfw+glad)

在这里插入图片描述

     fragmentShader.glsl

#version 330 core

out vec4 FragColor;

uniform vec4 ourColor;	// 用C++传入

void main()
{
	FragColor = ourColor;
};


     main.c

void _Render()
{
	// 使用程序
	glUseProgram(shaderProgram);

	/***************************************************/	// 周期性更改三角形填充色
	float _time = glfwGetTime();
	float _green = sin(_time)*0.5f + 0.5f;
	// 获得指定shader程序中uniform变量的位置
	int _location = glGetUniformLocation(shaderProgram, "ourColor");
	// // 用于向当前活动的shader程序中的uniform变量设置四个浮点数值
	glUniform4f(_location, 0.0f, _green, 0.0f, 1.0f);
	/***************************************************/	

	// 绑定VAO
	glBindVertexArray(VAO);

	// 绘制三角形
	glDrawArrays(GL_TRIANGLES, 0, 3);

	// 关闭使用程序
	glUseProgram(0);
}

关注

Wx GZH:码农总动员

笔者 - jxd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信必诺

嗨,支持下哥们呗。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值