RaylibRenderer
3D rendering system powered by Raylib.
namespace Xengine.Rendering;
public class RaylibRenderer
Accessing the Renderer
// Get the global renderer instance
var renderer = RaylibRenderer.Instance;
// Usually accessed in OnRender
protected override void OnRender(RaylibRenderer renderer)
{
renderer.DrawCube(Transform.Position, Vector3.One, Color.Red);
}
Camera Setup
// Set camera position and target
renderer.SetCamera(
new Vector3(0, 10, -10), // Camera position
Vector3.Zero, // Look at target
60f // Field of view
);
// Set camera with rotation
renderer.SetCameraRotation(
position,
rotation, // Quaternion
60f
);
Drawing 3D Shapes
DrawCube
// Solid cube
renderer.DrawCube(
new Vector3(0, 1, 0), // Position
new Vector3(1, 1, 1), // Size
Color.Blue // Color
);
// Wireframe cube
renderer.DrawCubeWires(
position,
size,
Color.White
);
DrawSphere
renderer.DrawSphere(
new Vector3(0, 1, 0), // Position
0.5f, // Radius
Color.Red // Color
);
DrawPlane
renderer.DrawPlane(
Vector3.Zero, // Position
new Vector2(20, 20), // Size (width, depth)
Color.Green // Color
);
DrawGrid
renderer.DrawGrid(
20, // Number of slices
1f // Spacing between lines
);
DrawLine3D
renderer.DrawLine3D(
new Vector3(0, 0, 0), // Start
new Vector3(5, 5, 5), // End
Color.Yellow // Color
);
Drawing 2D (UI Overlay)
// Draw text on screen
renderer.DrawText(
"Hello World", // Text
10, // X position
10, // Y position
24, // Font size
Color.White // Color
);
// Common UI patterns
renderer.DrawText($"FPS: {Time.FPS:F0}", 10, 10, 20, Color.White);
renderer.DrawText($"Score: {score}", 10, 40, 30, Color.Yellow);
Complete Example
public class GameRenderer : Component
{
public float CubeSize = 1f;
public Color CubeColor = Color.Blue;
protected override void OnUpdate()
{
// Update camera
RaylibRenderer.Instance?.SetCamera(
new Vector3(0, 10, -10),
Transform.Position,
60f
);
}
protected override void OnRender(RaylibRenderer r)
{
// Draw the main object
r.DrawCube(Transform.Position, new Vector3(CubeSize), CubeColor);
// Draw shadow on ground
r.DrawCube(
new Vector3(Transform.Position.X, 0.01f, Transform.Position.Z),
new Vector3(CubeSize, 0.02f, CubeSize),
new Color(0, 0, 0, 0.3f)
);
// Draw UI
r.DrawText($"Position: {Transform.Position}", 10, 10, 20, Color.White);
}
}