Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using Godot;
- public partial class RenderServerTest : Node3D
- {
- private Rid meshInstanceRid;
- private Rid meshRid;
- private Rid materialRid;
- private Rid shaderRid;
- public override void _Ready()
- {
- var mesh = new BoxMesh();
- if (mesh == null){
- GD.PrintErr("Failed to load mesh from: " + ObjFilePath);
- return;
- }
- materialRid = RenderingServer.MaterialCreate();
- Shader shader = GD.Load<Shader>("res://red.gdshader");
- var shaderRid = RenderingServer.ShaderCreate();
- RenderingServer.ShaderSetCode(shaderRid, shader.Code);
- RenderingServer.MaterialSetShader(materialRid, shaderRid);
- meshRid = RenderingServer.MeshCreate();
- for (int i = 0; i < mesh.GetSurfaceCount(); i++) {
- RenderingServer.MeshAddSurfaceFromArrays(
- meshRid,
- RenderingServer.PrimitiveType.Triangles,
- mesh.SurfaceGetArrays(i)
- );
- RenderingServer.MeshSurfaceSetMaterial(meshRid, i, materialRid);
- }
- meshInstanceRid = RenderingServer.InstanceCreate();
- RenderingServer.InstanceSetBase(meshInstanceRid, meshRid);
- Transform3D transform = Transform3D.Identity;
- transform.Origin = new Vector3(0, 10f, 0);
- RenderingServer.InstanceSetTransform(meshInstanceRid, transform);
- RenderingServer.InstanceSetScenario(meshInstanceRid, GetWorld3D().Scenario);
- }
- public override void _ExitTree()
- {
- RenderingServer.FreeRid(meshInstanceRid);
- RenderingServer.FreeRid(meshRid);
- RenderingServer.FreeRid(materialRid);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment