Jump to content
  • Advertisement
Sign in to follow this  
intenseza

OpenGL OpenGL I might just cry. Beginner needs help please...

This topic is 2069 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hey Guys

 

I'm just starting out with Opengl, and my lecturer has given us an example in Visual Studio using the Tao framework. The example simply draws a triangle and adds colour to it etc. I've literally copied the code line for line into my own solution, with variable names remaining the same, yet my Glcontrol stays Black! It's driving me absolutely mad. Please won't you help me out. The code is extremely simple so I can't figure out what is wrong... Box is the name of the GlControl on the form which I dragged into place.

 

 

 

using Tao.Platform.Windows;
using Tao.OpenGl;
 
namespace Graphics1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
 
        protected override void CreateHandle()
        {
            base.CreateHandle();
            Box.InitializeContexts();
        }
 
        protected override void DestroyHandle()
        {
            base.DestroyHandle();
            Box.DestroyContexts();
        }
 
        private void Box_Paint(object sender, PaintEventArgs e)
        {
            // set background colour and clear it
            Gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);
 
            // set up camera
            Gl.glMatrixMode(Gl.GL_PROJECTION);
            Gl.glLoadIdentity();
            Glu.gluOrtho2D(0, 1, 0, 1);
 
            // set lighting
 
            // draw
            Gl.glBegin(Gl.GL_TRIANGLES);
 
                Gl.glColor3f(1.0f, 0.0f, 0.0f);
                Gl.glVertex2f(0.0f, 0.0f);
 
                Gl.glColor3f(0.0f, 1.0f, 0.0f);
                Gl.glVertex2f(1.0f, 0.0f);
 
                Gl.glColor3f(0.0f, 0.0f, 1.0f);
                Gl.glVertex2f(0.5f, 1.0f);
            Gl.glEnd();
 
            // flip back buffer
            Gl.glFlush();
        }
 
    }

Share this post


Link to post
Share on other sites
Advertisement

If you change the line 

 

Gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

 

to

 

Gl.glClearColor(1.0f, 0.0f, 0.0f, 0.0f);

 

does it make it red?

 

If it does, there is problem with your code. Otherwise there is problem with OpenGL/Tao.

Edited by Nercury

Share this post


Link to post
Share on other sites

For some strange reason I fiddled around and made it work. -_- Thanks for the response, I'll be back if I run into more problems (hopefully not)

Share this post


Link to post
Share on other sites

I've replaced that Triangle code with the following

 

 

Gl.glBegin(Gl.GL_LINES);
            Gl.glColor3f(0.5f, 0.5f, 0.0f);
            Gl.glVertex3f(-2.0f, 2.0f, 0.0f);
            Gl.glVertex3f(2.0f, -2.0f, 0.0f);
            Gl.glEnd();
 
Nothing wants to draw/render. It's pretty upsetting when you want to do your assignments and nothing wants to work :/

Share this post


Link to post
Share on other sites

Try setting a viewport before setting up camera (specifically - using gluOrtho):

 

Gl.glViewport(0, 0, 300, 300);

 

Just so you know, there is nothing exceptional about Tao framework - you can try pretty much any open gl example.

Edited by Nercury

Share this post


Link to post
Share on other sites

The



 Gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

 

should only be set once at the program initialization, you don't need to set it every frame (also, the background color you get is set by this call, which is black here).

 

Then:



private void Box_Paint(object sender, PaintEventArgs e)
        {
            // set background colour and clear it
            Gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);
 
            // set up camera
            Gl.glMatrixMode(Gl.GL_PROJECTION);
            Gl.glLoadIdentity();
            Glu.gluOrtho2D(0, 1, 0, 1);
            
            //You have to switch back to the ModelView matrix here after setting the projection matrix
            GL.glMatrixMode(GL_MODELVIEW);
            GL.glLoadIdentity();
            ...

 

 

 

 

You need to switch back to the modelview matrix after setting the projection matrix (ortho/perspective).

 

See if it works.

Edited by __SKYe

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!