What's wrong with this code
//******************************************************
GLfloat x,y,z,angle;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glPushMatrix();
glRotatef(xRot, 1.0f, 0.0f, 0.0f);
glRotatef(yRot, 0.0f, 1.0f, 0.0f);
// Call only once for all remaining points
glBegin(GL_LINE_STRIP);
z = -50.0f;
for(angle = 0.0f; angle <= (2.0f*GL_PI)*3.0f; angle += 0.1f)
{
x = 50.0f*sin(angle);
y = 50.0f*cos(angle);
// Specify the point and move the Z value up a little
glVertex3f(x, y, z);
z += 0.5f;
}
// Done drawing points
glEnd();
// Restore transformations
glPopMatrix();
glFinish();
SwapBuffers(wglGetCurrentDC());
//--------------------------------------------------------
If Nothing is wrong why do i get the following error
----> EZeroDivide with ''Floating point division by zero''.
Any though will be Appreciated.
There is no division so the problem is not explicit in the code.
I had some problem with
SwapBuffers(wglGetCurrentDC());
(OpenGL-Win32 does not work )
Try to GetDC when you create the window and then use the same HDC and use it every time you swap buffers...
// create window and setup OpenGL
...
HDC hDC;
...
hDC = GetDC(hwnd); // hwnd is your window handle
...
// rendering loop
...
SwapBuffers(hDC);
...
It seems strange but on my system is not the same thing!
I had some problem with
SwapBuffers(wglGetCurrentDC());
(OpenGL-Win32 does not work )
Try to GetDC when you create the window and then use the same HDC and use it every time you swap buffers...
// create window and setup OpenGL
...
HDC hDC;
...
hDC = GetDC(hwnd); // hwnd is your window handle
...
// rendering loop
...
SwapBuffers(hDC);
...
It seems strange but on my system is not the same thing!
That''s what i did, i keep getting the same error at
// Specify the point and move the Z value up a little
glVertex3f(x, y, z);
z += 0.5f; <-----This Line
// Specify the point and move the Z value up a little
glVertex3f(x, y, z);
z += 0.5f; <-----This Line
Now I don''t know anything about OpenGl, but what does the vertexing function do?
Because you are starting Z at a negative value, so eventually it''ll probably reach 0. Just put in something like..
z += 0.5f;
if (z==0) z=0.5f;
See if that fixes it.
Because you are starting Z at a negative value, so eventually it''ll probably reach 0. Just put in something like..
z += 0.5f;
if (z==0) z=0.5f;
See if that fixes it.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement