webgl 3D场景的默认颜色

时间:2016-10-21 09:04:00

标签: javascript html opengl-es webgl

webgl 3D scene background image texturesgl.clearColor(0.0, 0.0, 0.0, 0.0); //alpha=0 for background img gl.enable(gl.DEPTH_TEST); 形状很少 我想添加一些线条和其他形状,并在它们上面应用默认颜色,这不会影响带纹理的形状 我怎么能这样做?
这就是我现在所拥有的:

array(
    (int) 1 => array(
        (int) 3 => 'value',
        (int) 12 => 'value'
    ),
    (int) 5 => array(
        (int) 8 => 'value',
        (int) 10 => 'value',
        (int) 15 => 'value'
    )
)

2 个答案:

答案 0 :(得分:2)

我将根据C接口公开的调用来编写以下内容(为了普遍性;规范本身完全省略了前面的gl ...)。

glClearColor选择在调用glClear(GL_COLOR_BUFFER_BIT | …)时清除帧缓冲区的颜色。没有进行glClear调用就没有任何效果。

glEnable(GL_DEPTH_TEST)可以对随后的绘图调用进行深度测试。

  

想要添加一些线条和其他形状并在其上应用默认颜色   ...   我怎么能这样做?

呃,只是画它们。

  

不会影响带纹理的形状。

无论如何,这就是OpenGL的工作方式。 OpenGL不描述场景。 OpenGL就是“在当下”发生的事情。它只是一次绘制一个点,线或三角形,唯一的“干涉”是它在帧缓冲区中过度绘制像素。

当然,对于全局状态机,更改状态会对后面的所有内容产生影响。因此,如果您想要回到之前的行为,则必须撤消您为特定绘图所做的所有状态更改。

答案 1 :(得分:1)

WebGL默认合成到网页中。这意味着清除0,0,0,0表示画布是透明的,画布本身的标准网页CSS背景颜色设置或其背后的元素(<body><html>&gt;等等是什么画布将与

混合

您可能会发现此答案有用

https://stackoverflow.com/a/39354174/128511