我想留下OpenGL的灯光,然后自己做.我希望我的着色器允许可变数量的灯光.
我们可以在GLSL着色器中声明一组制服吗?如果是这样,我们如何设定这些制服的价值?
如果要渲染冒名顶质几何体(比如球体),则标准练习是使用两个三角形绘制它(例如,通过传递一个顶点并使用几何着色器制作三角形条带).
这很好,因为它允许相当简单地设置广告牌的范围:直接计算实际的世界空间位置.
几何着色器可以交替输出点基元,我没有看到它们不应该的原因.唯一的问题是找到一些扩展方法,gl_PointSize以便你获得这种效果.
我能找到的唯一先例是这个问题(我的答案我不确定是正确的)和这个问题(没有答案).
值得注意的是,用距离正确地缩放点是相当简单的(通过这样做gl_PointSize = constant/length(gl_Position),但这是不可控的;你不能说例如:我希望这一点看起来像是两个世界单位.
那么:谁知道怎么做?
我有一个相当复杂的场景,我需要渲染许多GL_POINTS.场景将基本上是静态的,所以我想将它渲染到Framebuffer对象,然后只在场景实际发生变化时更新FBO.然后,我想将FBO渲染到每一帧的屏幕上.
我找到了将FBO渲染为纹理的示例.我找到了将FBO渲染成RenderBuffer的例子(仍不太确定是什么).我不确定实现这一目标的步骤是什么.我是否需要渲染到纹理并将纹理绘制到屏幕上?
你可以列举一下步骤(理想情况下甚至是伪代码或实际代码)来将我的场景渲染到FBO然后将FBO绘制到屏幕上.
draw() 对于我自己的绘图功能的占位符来说已经足够了.