Jy-Falc00n
PCGHX-HWbot-Member (m/w)
Hallo!
Ich habe ein Problem zu folgendem selbst geschriebenden Code :
Das problem ist der rote Ball, er ist ständig am flackern und ich weiss nicht warum. Ich kann OpenGl erst seit ein paar Tagen, und finde denn Fehler deshalb wohl nicht.
Ich hoffe ihr könnt mir helfen!
Jy-Falc00n
Ich habe ein Problem zu folgendem selbst geschriebenden Code :
Code:
#include <iostream>
#include <stdlib.h>
#include <GL/glut.h>
#include <math.h>
using namespace std;
GLdouble ox=0.0,oy=0.0,oz= 0.0;
int CursorX;
int CursorY;
float Xdevi;
float Ydevi;
float enemy[2];
void WinPosTo3DPos(int x, int y)
{
GLint viewport[4];
GLdouble modelview[16],projection[16];
GLfloat wx=x,wy,wz;
glGetIntegerv(GL_VIEWPORT,viewport);
y=viewport[3]-y;
wy=y;
glGetDoublev(GL_MODELVIEW_MATRIX,modelview);
glGetDoublev(GL_PROJECTION_MATRIX,projection);
glReadPixels(x,y,1,1,GL_DEPTH_COMPONENT,GL_FLOAT,&wz);
gluUnProject(wx,wy,wz,modelview,projection,viewport,&ox,&oy,&oz);
}
void PosByAngle(float angle, float x, float y, float lenght)
{
Xdevi = (sin(angle) * lenght) + x;
Ydevi = (cos(angle) * lenght) + y;
}
void initRender(int w, int h)
{
glEnable(GL_DEPTH_TEST);
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0,
(double)w / (double)h,
1.0,
200.0);
WinPosTo3DPos(400,300);
}
void Render()
{
glDepthMask(true);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glColor3f(0.8f,0.8f,0.6f);
glBegin(GL_TRIANGLE_STRIP);
glVertex3d(-50.0f,50.0f,-51.0f);
glVertex3d(-50.0f,-50.0f,-51.0f);
glVertex3d(50.0f,50.0f,-51.0f);
glVertex3d(50.0f,-50.0f,-51.0f);
glEnd();
glTranslatef(enemy[1],enemy[2],-50.0f); //Problem
glColor3f(1.0f,0.0f,0.0f); //Problem
glutSolidSphere(1,8,8); //Problem
glLoadIdentity();
glDepthMask(false);
glColor3f(0.0f,1.0f,0.0f);
WinPosTo3DPos(CursorX,CursorY);
glTranslatef(ox,oy,oz);
glutSolidSphere(1,16,16);
glLoadIdentity();
glutSwapBuffers();
}
void MouseMang(int button, int state, int x, int y) // Mouse handle function
{
WinPosTo3DPos(x,y);
cout << "Done!";
}
void MouseMang_Move(int x, int y)
{
CursorX = x;
CursorY = y;
}
void Game(int vaule)
{
glutPostRedisplay();
glutTimerFunc(25, Game,0);
}
int main(int argc, char** argv)
{
enemy[1] = 0.0f;
enemy[2] = 0.0f;
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(800, 600);
glutCreateWindow("wdwdqa");
initRender(800,600);
glutPassiveMotionFunc(MouseMang_Move);
glutMouseFunc(MouseMang);
glutDisplayFunc(Render);
glutTimerFunc(25, Game,0);
glutMainLoop();
return 0;
}
Ich hoffe ihr könnt mir helfen!
Jy-Falc00n