OpenGL超级宝典(第7版)笔记8 几何着色器 清单3.9

OpenGL超级宝典(第7版)笔记8 几何着色器 清单3.9


上一篇我们介绍了曲面细分的各个环节,包括细分曲面控制着色器TCS、细分曲面引擎、细分曲面评估着色器TES。这回我们将学习在光栅化之前最后一个可编程的着色器,结合着色器。并稍微说说基元装配、裁剪、光栅化有关的东西。

首先说说最简单的几何着色器编译:

geometry_shader = glCreateShader(GL_GEOMETRY_SHADER);
	glShaderSource(geometry_shader, 1, geometry_shader_source2, NULL);
	glCompileShader(geometry_shader);
	glGetShaderiv(geometry_shader, GL_COMPILE_STATUS, &shader_success);//检查编译是否成功
	if (!shader_success)
	{
   
		glGetShaderInfoLog(geometry_shader, 512, NULL, infoLog);
		std::cout << "ERROR::SHADER::GEOMETRY_SHADER::COMPILATION_FAILED\n" << infoLog << std::endl;
	}

和之前的各种着色器没什么不同,就是注意GL_GEOMETRY_SHADER,还有别忘了在连接着色器程序前把这个着色器attach上(glAttachShader();)

几何着色器

几何着色器可以改变基元的模式,例如输入到几何着色器的是很多的小三角形,而输出可以是很多的顶点,还例如输入是很多的顶点,输出可以在每个顶点位置处生成很多的小三角形。几何着色器十分的灵活(它甚至能在细分着色器之后再对三角形进行细分,见后方我们的试验)

几何着色器的运行十分特殊,它对每个输入基元运行一次,在运行时可以访问该基元所有的顶点信息,且在一次运行中可以通过EmitVertex();进行多次的顶点输出(等下你就会见到),例如清单3.9

清单3.9 我们的第一个几何着色器

#version 450 core							
layout (triangles) in;						
layout (points,max_vertices=3) out;		
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值