网格体使用`setVerticesBuffer`不显示,但使用`VertexData`正确显示

问题描述 投票:0回答:1

问题描述: 我在使用 Babylon.js 开发 3D 图形时遇到问题。我尝试使用

setVerticesBuffer
方法直接设置网格顶点位置,但网格不显示。但是,当我使用
VertexData
对象应用相同的位置数据时,网格显示正确。我想了解这种行为的潜在原因并寻求解决方案。

尝试的解决方案

  1. 我检查了着色器的属性和统一变量设置,以确保没有遗漏任何内容。
  2. 我尝试使用
    setVerticesBuffer
    来表示颜色和位置,但似乎位置数据仍然没有正确应用。
  3. 我确保
    updatable
    VertexBuffer
    参数设置为
    true
    ,以便将来可能进行更新。

相关代码

// Shader and material initialization code
Effect.ShadersStore[`coarsePathVertexShader`] = `
precision highp float;
attribute vec3 position;
attribute vec4 color;
uniform mat4 worldViewProjection;
uniform float size;
varying vec4 vColor;
void main() {
    gl_Position = worldViewProjection * vec4(position, 1.0);
    gl_PointSize = size;
    vColor = color;
}`;
// Method 1:
    // const positionsBuffer = new BABYLON.VertexBuffer(engine, points, "position", true, false, 3, false);
    // mesh.setVerticesBuffer(positionsBuffer);

//Method 2 :
    const vertexData = new BABYLON.VertexData();
    vertexData.positions = points;
    vertexData.applyToMesh(mesh, false);

游乐场示例: 请参考我的Babylon.js Playground示例来查看问题的具体表现:[Playground链接](Playground)

请求帮助: 我正在寻求经验丰富的开发人员的指导或建议,以帮助解决此问题。如果您遇到类似的问题或知道潜在的解决方案,非常欢迎您的反馈。

shader mesh babylonjs
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.