【发布时间】:2026-01-28 05:20:18
【问题描述】:
我正在尝试使用 THREE.js 中的直通顶点着色器建立一个全屏四边形。四边形本身是一个平面几何,尺寸 (2, 2) 位于原点。它被分配了 ShaderMaterial。摄像头位于z = 1,瞄准四边形。
着色器非常简单:
顶点着色器:
void main() {
gl_Position = vec4( position, 1.0 );
}
片段着色器:
void main() {
gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);
}
但屏幕上什么也没有。这种设置是渲染到纹理的标准方式,为什么它在 THREE.js 中不起作用?
我尝试plane.frustumCulled = false 并更改相机的剪辑平面无济于事。
感谢任何帮助。
经过进一步调查,看不到渲染结果的原因更多涉及并指向three.js中的一些奇怪行为。
我正在使用一个应用了旋转矩阵的 PlaneGeometry,然后它被一个带有反向旋转的 Object3D 包裹。
var geometry = new THREE.PlaneGeometry(2, 2);
var m4 = new THREE.Matrix4().makeRotationX(Math.PI * 0.5);
geometry.applyMatrix(m4);
var mesh = new THREE.Mesh(geometry, material);
var obj = new THREE.Object3D();
obj.add(mesh);
obj.rotation.x = -Math.PI * 0.5;
scene.add(obj);
此设置似乎会关闭 three.js,并且不显示任何渲染。
好的,旋转被丢弃了,因为它是我在顶点着色器中忽略的模型视图矩阵的一部分。我必须重构我目前正在做的事情。
【问题讨论】:
-
尝试做一个jsfiddle!这里没有足够的信息来帮助您。
-
问题解决了,见上面我的cmets。
标签: javascript html three.js