双源融混
来源:互联网 发布:java temp dir 编辑:程序博客网 时间:2024/06/06 09:21
所谓的双源融混就是片元的两个输出元,作用于同一个帧缓存。
GPU:
layout(location = 0, index = 0) out vec4 first_output;layout(location = 0, index = 1) out vec4 second_color;
CPU:
CHECK_GL_ERROR(); glClear(GL_COLOR_BUFFER_BIT); CHECK_GL_ERROR(); nv::matrix4f projection_matrix; nv::perspective(projection_matrix, 3.14f * 0.25f, m_width/(float)m_height, 0.1f, 30.0f); nv::matrix4f camera_matrix = projection_matrix * m_transformer->getModelViewMat(); CHECK_GL_ERROR(); //------------------------- glDisable(GL_BLEND); //-------------------------- mProgram->enable(); mProgram->setUniformMatrix4fv("uViewProjMatrix", camera_matrix._array, 1, GL_FALSE); mProgram->setUniform4f("vColor", 0.7, 0.3, 0.4, 0.5); CHECK_GL_ERROR(); NvDrawQuadGL(mProgram->getAttribLocation("aPosition")); CHECK_GL_ERROR(); //---------------------- glEnable(GL_BLEND); glBlendFunc(GL_ONE, GL_SRC1_COLOR); //---------------------- nv::matrix4f offset_matrix; offset_matrix.set_translate(nv::vec3f(1.0f,0.0f,0.0f)); camera_matrix = projection_matrix * offset_matrix*m_transformer->getModelViewMat(); mProgram->setUniform4f("vColor", 0.3, 0.7, 0.4, 0.5); mProgram->setUniformMatrix4fv("uViewProjMatrix", camera_matrix._array, 1, GL_FALSE); CHECK_GL_ERROR(); NvDrawQuadGL(mProgram->getAttribLocation("aPosition")); CHECK_GL_ERROR(); mProgram->disable();
设置的效果:
程序验证:
扩展技巧:
通过uniform 变量的形式由应用程序传递给GPU的参数。只要设置一次,那么这个变量的值的状态就由这个程序对象进行维护。直到下一次更改为止。
比如设置一个颜色变量,只需要设置一次即可,不必要每次不更改都设置其值。
源码链接:
https://t.xiaomiquan.com/M7YFEqZ
阅读全文
0 0
- 双源融混
- 输出工资单实例
- PHP探针
- HMM经典介绍论文【Rabiner 1989】翻译(十六)——放大
- Multidex(一)之源码解析
- 第三方分享及授权登录
- 双源融混
- Nginx简单使用
- leetcode 665. Non-decreasing Array
- SpringBoot非官方教程 | 第二十一篇: springboot集成JMS
- 部署Maven项目到tomcat报错:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderLi
- 如果没有UX经验,如何创建个人UX作品集?
- 最强Android Studio使用小技巧和快捷键
- 接口、抽象类
- lwj_C#_建立一个数学MathTool类包含的方法