[英]OpenSceneGraph and GLSL 330 light and shadows
我寫了很多
#version 330 core
我想與OpenSceneGraph(OSG)3.2.0框架一起重用的GLSL着色器,並嘗試弄清楚如何從需要通過制服傳遞的OSG中獲取狀態,以及如何設置它們而無需更改經過良好測試的着色器代碼,以及如何填充任意命名的屬性。
這個(版本140,OpenGL 3.1) http://trac.openscenegraph.org/projects/osg/browser/OpenSceneGraph/trunk/examples/osgsimplegl3/osgsimplegl3.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中的“某處”和“不知何故”必須匯總燈光和esp陰影信息以用於默認陰影,因此我只想使用此數據並將其調整為適合我的自定義着色器的位置。
所以根本的問題是
如何用OSG內部的數據填充任意 GLSL 330着色器,而不必重新發送冗余的統一分配-除了OSG設置的“ osg _ [...]”統一外,手動提供我的“ u [.. Matrix]”-或更改着色器源中的屬性名稱?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.