Skip to content

Instantly share code, notes, and snippets.

@Alan-FGR
Created November 9, 2016 21:47
Show Gist options
  • Select an option

  • Save Alan-FGR/a1fc7d762ac0c37ceef8ca6eb403e4d4 to your computer and use it in GitHub Desktop.

Select an option

Save Alan-FGR/a1fc7d762ac0c37ceef8ca6eb403e4d4 to your computer and use it in GitHub Desktop.
using System;
using AtomicEngine;
//################ Render.xml
//<renderpath>
// <command type="sendevent"/>
//</renderpath>
public class Program
{
public static void Main(string[] args)
{
Application.Run<Game>(args);
}
}
public class Game : AppDelegate
{
public override void Start()
{
var graphics = AtomicNET.GetSubsystem<Graphics>();
pixelShader = graphics.GetShader(ShaderType.PS, "Atomic2D");
vertexShader = graphics.GetShader(ShaderType.VS, "Atomic2D");
vertexBuffer = new VertexBuffer();
vertexBuffer.SetSize(12, Constants.MASK_POSITION | Constants.MASK_COLOR, true);
var renderer = AtomicNET.GetSubsystem<Renderer>();
var viewport = renderer.GetViewport(0);
var cache = GetSubsystem<ResourceCache>();
var renderpath = viewport.GetRenderPath().Clone();
renderpath.Append(cache.GetResource<XMLFile>("Render.xml"));
viewport.SetRenderPath(renderpath);
graphics.SetShaders(vertexShader, pixelShader);
graphics.SetShaderParameter(ShaderParams.VSP_MODEL, Matrix3x4.IDENTITY);
graphics.SetShaderParameter(ShaderParams.PSP_MATDIFFCOLOR, Color.White);
graphics.SetCullMode(CullMode.CULL_NONE);
var scene = new Scene();
scene.CreateComponent<Octree>();
camera = scene.CreateChild("Camera").CreateComponent<Camera>();
camera.Node.Position = new Vector3(0.5f, 0.5f, 0.0f);
camera.Orthographic = true;
camera.OrthoSize = 1.5f;
viewport.Scene = scene;
viewport.Camera = camera;
SubscribeToEvent("RenderPathEvent", (u, e) => { Render(); });
}
VertexBuffer vertexBuffer;
ShaderVariation pixelShader;
ShaderVariation vertexShader;
private Camera camera;
unsafe void Render()
{
IntPtr vertexData = vertexBuffer.Lock(0, 12, true); {
float* vout = (float*) vertexData;
vout[0] = 0;
vout[1] = 0;
vout[2] = 0;
vout[3] = 0xFFFF0000;
vout[4] = 1;
vout[5] = 0;
vout[6] = 0;
vout[7] = 0xFF00FF00;
vout[8] = 0.5f;
vout[9] = 1;
vout[10] = 0;
vout[11] = 0xFF0000FF;
} vertexBuffer.Unlock();
AtomicNET.GetSubsystem<Renderer>().GetViewport(0).View.SetCameraShaderParameters(camera);
var graphics = AtomicNET.GetSubsystem<Graphics>();
graphics.SetDefaultTextureFilterMode(TextureFilterMode.FILTER_NEAREST);
graphics.SetBlendMode(BlendMode.BLEND_ALPHA);
graphics.Clear(0x1, Color.White);
graphics.SetVertexBuffer(vertexBuffer);
graphics.Draw(PrimitiveType.TRIANGLE_LIST, 0, 12);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment