OpenSceneGraph and GLSL 330 light and shadows
OpenSceneGraph and GLSL 330 light and shadows
我写了很多
#version 330 core
GLSL着色器我想与OpenSceneGraph (OSG) 3.2.0框架一起重用,并试图弄清楚如何从OSG中获得我需要通过制服传递的状态,以及如何设置它们而无需更改经过良好测试的着色器代码,以及如何填充任意命名的属性。
This (version 140, OpenGL 3.1)http://trac.openscenegraph.org/projects/osg/browser/OpenSceneGraph/trunk/examples/osgsimplegl3/osgsimplegl3.cpp
和this (version 400)http://trac.openscenegraph.org/projects/osg/browser/OpenSceneGraph/trunk/examples/osgtessellationshaders/osgtessellationshaders.cpp
示例产生了将某些属性和制服名称混叠到"osg_"的概念,但我想使用任意的名称作为制服,
uniform mat4 uMVMatrix;
/*...*/
和引用,或者让OSG引用,只通过它们的数字来引用属性,所以像这样的
/*...*/
layout(location = 0) in vec4 aPosition;
layout(location = 1) in vec3 aNormal;
layout(location = 2) in vec2 aST;
在我的遗留着色器中使用的,我希望OSG框架填充它已经为"Drawables"维护的vbo,或者,至少,使用API调用并自己做。
另外,我想通过布景和参观者来填充灯光和阴影地图的制服;在SG中的"某处"answers"某种程度上"必须有光和特别是阴影信息被聚合为默认着色,所以我想简单地喜欢使用这些数据并调整它以适合我的自定义着色器。
所以基本问题是
如何用OSG内部的数据填充任意 GLSL 330着色器,而不必重新分配冗余的统一分配-提供我的"u[..]矩阵"手动除"osg_[…]由OSG统一设置-或者改变着色器源中的属性名称?
我只是偶然发现了这一点,事实证明,你可以使用你自己的名字毕竟,如果你只是指定布局位置(到目前为止,我只尝试了顶点位置,所以你可能要注意使用正确的布局位置osg会指定他们,即顶点位置为0,正常为1(这不是做的例子链接虽然))
layout (location = 0) in vec3 vertex;
这足以在着色器中使用名为vertex的变量。
链接还提供了一个使用矩阵自定义名称的示例:您创建一个osg::Uniform::Callback类,该类将矩阵上传到制服。当您创建osg::Uniform对象时,您可以指定您选择的名称并添加回调。
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- 为什么 Clang 不允许"and"作为函数名称?
- 位阵列上的快速AND运算
- 是否可以在 C++03 中定义'move-and-swap idiom'等效项
- BoostPython and CMake
- OpenSSL BIO and SSL_read
- Gurobi GRBModel and GRBmodel in C++
- std::visit and std::variant usage
- SHBrowseForFolder with BIF_BROWSEFORCOMPUTER and SHGetPathFr
- Directx12 and keystrokes
- different between int **arr =new int [ n]; and int a[i][j]?
- C++ getenv and setenv
- Inference pytorch C++ with alexnet and cv::imread image
- Visual Studio 2019 C++ and std::filesystem
- 保证逻辑 AND 表达式中的函数调用
- python ctypes and C++ pointers
- C++ const char with .begin() and .end()
- Threads with Classes and std::packaged_task
- OpenSceneGraph and GLSL 330 light and shadows