CSharpGL - Object Oriented OpenGL in C#

Object Oriented OpenGL in C#

🔮Wiki | 🍳nuget | 🍞CSharpGL.dll
CSharpGL wraps OpenGL features(VBO, shader, scene, picking, UI, text etc) and offers general demostrations and documents.


A winform control that supports drag-drop and wraps initialization of creating OpenGL context.

📌Color-Coded Picking

IColorCodedPicking supports picking primitives in multiple vertex buffer objects using Mouse.
pick and move primitive

🔘☑️UIRenderer & Text

Rendering 'Control' at fixed position with fixed size.
For example, UIAxis renders an axis at left bottom corner.
All kinds of controls binds to specified border just like winform-control.
Rendering text using glRasterPos() and CallList().(Obsolete)
Rendering text using UIText.
UIText and UIAxis


💎Some Cool Demos

Image Processing using Compute Shader.

Simple edge-detection implemented by compute shader.

Raycast Volume Rendering using 3D texture.


Particle Simulator using Compute Shader.

Particle's speed and position is updated by compute shader.

Order-Dependent Transparency VS Order-Independent Transparency.


Point Sprite.

10000 particles with a sphere inside a cube.

Generated Klein Bottle.

Klein Bottle


An earth model that singly rotates same as real earth. It's composed of 65341 positions, normals and uvs and 130140 indexes and a 10800x5400 texture.

🆔💯Billboard and LabelRenderer

Billboard can be used to display health-bar, damage numbers in game application.
LabelRenderer renders a string at specified position which always faces camera.

🎥Scene Editor

Useful tool to build a scene and feels how opengl's transform system works.

🍟Renderer Generator

RendererGenerator is a tiny console that reads an xml config file and dumps a Renderer.cs, a Model.cs, a vertex shader file(.vert) and a fragment shader file(.frag).
A demo is shown as below:

<?xml version="1.0" encoding="utf-8"?>
<RendererGenerator TargetName="Demo" ZeroIndexBuffer="false" DrawMode="Points">
  <VertexAttribute NameInShader="in_Position" NameInModel="position" AttributeType="vec3" />
  <VertexAttribute NameInShader="in_TexCoord" NameInModel="texCoord" AttributeType="vec2" />

❓Support or Contact

Check my blog here or join my QQ GroupCSharpGL(C#+OpenGL).

posted @ 2016-06-04 00:45 BIT祝威 阅读(...) 评论(...) 编辑 收藏

Large Visitor Globe

Flag Counter
Flag Counter