【问题标题】:Default color for webgl 3D scenewebgl 3D 场景的默认颜色
【发布时间】:2016-10-22 03:11:41
【问题描述】:

我有webgl 3D scenebackground image 以及一些带有textures 的形状。
我想添加一些线条和其他形状并在它们上应用默认颜色,这不会影响带有纹理的形状。
我该怎么做?
这就是我现在所拥有的:

gl.clearColor(0.0, 0.0, 0.0, 0.0); //alpha=0 for background img
gl.enable(gl.DEPTH_TEST);

【问题讨论】:

  • "我要计算 PI,这是我现在的:var PI;"
  • 我只写了我认为相关的代码@LJᛃ

标签: javascript html opengl-es webgl


【解决方案1】:

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

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

glEnable(GL_DEPTH_TEST) 为随后的绘图调用启用深度测试。

想要添加一些线条和其他形状并应用默认颜色 … 我该怎么做?

呃,画出来吧。

不影响带有纹理的形状。

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

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

【讨论】:

    【解决方案2】:

    WebGL 默认合成到网页中。这意味着清除为 0,0,0,0 意味着画布是透明的 画布本身的标准网页 CSS 背景颜色设置或其背后的元素(<body><html>> 等是该画布将与之混合的内容

    您可能会发现此答案很有帮助

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-09
      • 2013-11-19
      • 1970-01-01
      • 2013-06-26
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      相关资源
      最近更新 更多