传递属性变量:黑屏
Passing an attribute variable : black screen
我正在尝试将一个具有 three.js 的属性变量传递给顶点着色器,然后顶点着色器应该通过 varying
变量将其传递给片段着色器。
顶点着色器:
attribute vec4 color;
varying vec4 outColor;
void main()
{
outColor= color;
gl_Position= projectionMatrix * modelViewMatrix * vec4(position,1.0);
}
片段着色器:
varying vec4 outColor;
void main() {
gl_FragColor = outColor;
}
这样,假设我有一个有 8 个顶点的立方体:如果每个顶点有不同的颜色,那么应该通过插值每个顶点的颜色来绘制立方体,并且在面的中间它应该有一个混合的颜色。这是我初始化属性的 javascript 代码片段:
var colors= [];
for(var i=0; i<geometry.vertices.length; i++) {
colors.push(new THREE.Vector4(0.0,1.0,0.0,1.0));
}
var attributes = {
color: {type:"v4", value: colors}
};
var material= new THREE.ShaderMaterial({
uniforms: uniforms,
attributes: {},
vertexShader: document.getElementById("vertexShader").textContent,
fragmentShader: document.getElementById("fragmentShader").textContent
});
现在,这应该画一个完全绿色的立方体。问题是顶点着色器中的指令outColor=color;
搞砸了一切:我只看到一个黑屏。如果我将此指令替换为outColor=vec4(0.0,1.0,0.0,1.0);
,我会在屏幕上看到一个正确绘制的绿色立方体。
这是完整的源代码。
尝试将attributes
传递而不是{}
传递给THREE.ShaderMaterial
构造函数。
相关文章:
- 关于渲染在three.js中获得黑屏
- 使用离子模态会产生空白黑屏
- 弹出模型不弹出,变为黑屏
- 加载PDF文件/网址在Safari浏览器中显示黑屏
- 离子 2:模态关闭后的“黑屏”
- 离子安卓应用程序启动后黑屏
- 传递属性变量:黑屏
- 安卓上的html5视频标签显示黑屏
- 当我使用 JavaScript 动态加载下一个视频时出现黑屏
- 黑屏问题,使用cocoonjs编译
- 更改HTML5视频src时出现黑屏
- Ionic Modal在黑屏上滑动
- 在cordova播放视频时出现黑屏
- 在浏览器中打开下载的ics文件'返回后,App出现黑屏
- 在IE8中通过javascript删除嵌入的youtube视频时出现黑屏
- 播放YouTube视频时出现黑屏:Phonegap Android
- 在多个浏览器上测试OpenTok flash时,一个浏览器可以正常发布视频,但另一个浏览器显示黑屏
- 为什么我的页面在移动设备上只显示背景黑屏而不是mp4视频背景
- 溶解黑屏与帮助的javascript或jquery在HTML页面
- 从文本编辑器加载HTML时出现黑屏