Rotation of a Cube with OpenGL in C#


This program draws a cube that rotates in X, Y and Z. This Windows application was developed in C # and with the help of the OpenGL libraries.

This simple application demonstrates how OpenGL works and how easy it is to draw a 3D figure and make it move in the direction we choose.
The first step is to add the library through Tao OpenGL

using Tao.OpenGl;

Then declare global variables that will control the rotations in the different axes. You declare the variables width and height to control the size of the object where you draw the cube.

public partial class Form1 : Form
    {
     double xrot, yrot, zrot;
     int width;
     int height;


As a next step in the constructor of the form containing the control initializers OpenGL, which draw the cube in shape. You have to initialize this component to load all the pictures in it. It also contains the initialization of variables as well as the port of vision, perspective and how the cube will be displayed on the screen.

 public Form1()
        {
            InitializeComponent();
            simpleOpenGlControl1.InitializeContexts();
            width = simpleOpenGlControl1.Width;
            height = simpleOpenGlControl1.Height;
            Gl.glViewport(0, 0, width, height);
            Gl.glMatrixMode(Gl.GL_PROJECTION);
            Gl.glLoadIdentity();
            Glu.gluPerspective(45.0f, (double)width / (double)height, 0.01f, 5000.0f);
            Gl.glEnable(Gl.GL_CULL_FACE);
            Gl.glCullFace(Gl.GL_BACK);
 
        }


You have to set the method to paint the control of OpenGL, which will contain the methods, as well as the coordinates of the cube and how it is painted on the screen. For example you can choose between lines or only points in addition to filling the faces of the cube.

private void simpleOpenGlControl1_Paint(object sender, PaintEventArgs e)
        {
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);

            Gl.glMatrixMode(Gl.GL_MODELVIEW);
            Gl.glLoadIdentity();

            Gl.glTranslated(0, 0, -5);
            Gl.glRotated(xrot += 0.5, 1, 0, 0);
            Gl.glRotated(yrot += 0.3, 0, 1, 0);
            Gl.glRotated(zrot += 0.2, 0, 0, 1);

            Gl.glPointSize(3);
            Gl.glPolygonMode(Gl.GL_FRONT, Gl.GL_LINES);
            Gl.glPolygonMode(Gl.GL_BACK, Gl.GL_LINES);
            Gl.glBegin(Gl.GL_QUADS);


This method is the most important program because it contains everything that will make the figure on screen, the rotation factors, such as can be seen in the X axis will be greater the rotation because he has been assigned a greater increase the other axes. It can be seen in the call to PolygonMode method () as draw cube style, in this case was selected lines.

rotation.gif

It includes the project in Microsoft C #, in addition to the executable and the libraries necessary to run this program.

erver'>

Similar Articles