Gsus
27-12-2005, 20:54
Hallo
ich sitze seit längern an diesem code habe ihn mir aber schon seit gut einem Jahr nicht mehr angschaut weil ich da ein Problem hatte nähmlich das ich das LookAt nicht richtig änder konnte ...
Es soll sich wie ein Raumschiff verhalten... das ist Sinn dieses Codes, denn es soll mal ein Weltraum shooter werden. Es ist eigentlich gar nicht mehr soweit weg davon... ich habe den Netzwerkteil schon etwas angefangen ("zumindest für Linux/Unix") aber das ist nicht gestand der Sache.
Problem: wenn ich mit 'w' 'a' 's' 'd' den LookAt ändere bleibt mein Sicht feld immer in der mitte. Ich kann mich zwar mit der Maus bewegen Aber ich kann mich nicht um 180° drehen.
Also man muss es am besten mal compeliert haben. Leider konnte ich die Texturen nicht mit liefern bei bedarf nach fragen und ich sende sie per email.
Es ist durch die glut Platformunabhänig als es muss nur einmal dort compeliert werden.
Danke fürs durchlesen und bitte fragt wenn ihr meine Frage nicht kapiert vielleicht kann ich es durch Antworten verständlicher machen.
//--------Header---------------------------------------------------------------
#include <GL/glut.h> //Header Glut
#include <stdlib.h> //Header stdlib für exit(0)
#include <stdio.h> //Header stdio für file-Handling
#include <math.h> //Header math für diverse Rechnungen
#include <stdarg.h> //Header File For Variable Argument Routines
//--------Header---------------------------------------------------------------
//--------Konstanten-----------------------------------------------------------
#define ANZAHLSTERNE 10000000
#define BEREICHSTERNE 1000
//--------Konstanten-----------------------------------------------------------
//--------Globale Variable-----------------------------------------------------
double rot_x=0.0, rot_y=0.0, rot_z=5.0; //Ziel Kooridinaten
double tran_x=0.0,tran_y=0.0,tran_z=-100.0; //Start Kooradinaten
float oben=-1.0; //Wo ist oben
int buffer[256]; //Keyboard Buffer
int Schuss =0; //Wird geschossen ?
double dx, dy; //Delta von Maus
double starsx[ANZAHLSTERNE]; //Sternkoordinaten X
double starsy[ANZAHLSTERNE]; //Sternkoordinaten Y
double starsz[ANZAHLSTERNE]; //Sternkoordinaten Z
GLUquadricObj *qobj,*qobj2; //Qudrics für Kugeln
GLuint Laser_List; //Laser Display Liste
GLuint texture_erde= 0; //Textur Erde
GLuint texture_jupiter= 0; //Textur Jupiter
GLuint base; // Für Font-Listen
GLfloat cnt1; // 1st Counter Used To Move Text & For Coloring
GLfloat cnt2; // 2nd Counter Used To Move Text & For Coloring
//HDC hDC=NULL; // Für Font-Listen
//--------Globale Variable-----------------------------------------------------
//--------Deklarierung der Methoden--------------------------------------------
void init(void);
void display(void);
void idle(void);
void reshape(int w, int h);
void mouse(int mouseX, int mouseY); //Mausereignis verarbeiten
void maus(int button, int state, int mouseX, int mouseY);//Mausereignis verar...
void mouse2(int mouseX, int mouseY);//Mausereignis verarbeiten
void key_up( unsigned char key, int x, int y );//Keyboard
void key_down(unsigned char key, int x, int y);
void draw_erde(void);
void draw_jupiter(void);
void draw_cube(void);
void draw_plain(void);
void draw_sphere(void);
void draw_Laser(void);
void draw_Sterne(void);
void mache_Liste(void);
void schuss(void);
int LoadGLTextures();
void draw_Laser(void);
GLuint LoadTextureRAW( const char * filename, int wrap );
//void BuildFont(void);
//void KillFont(void);
void draw_Laser(void){
double x1 = tran_x;
double y1 = tran_y;
double z1 = tran_z;
double x2 = rot_x;
double y2 = rot_y;
double z2 = rot_z;
glBegin(GL_LINES);
glLineWidth( 20.0);
glColor4f(1.0,1.0,1.0,0.0);
glVertex3f(x1-300,y1,z1);
glVertex3f(x2,y2,z2);
glColor4f(1.0,0.0,0.0,0.0);
glVertex3f(x1,y1,z1);
glVertex3f(x2,y2,z2);
glLineWidth(2.0);
glEnd();
}
void mache_Liste(void){
Laser_List= glGenLists (1);
glNewList(Laser_List, GL_COMPILE);
draw_Laser();
glEndList();
}
void draw_Sterne(void){
glBegin(GL_POINTS);
glPointSize( 5.0);
glColor3f(1.0,1.0,1.0); //Weiss
int k=0;
for(;k<ANZAHLSTERNE;k++);
{
glVertex3f(starsx[k],starsy[k],starsz[k]);
}
glEnd();
}
void reshape (int w, int h)
{
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(22.5,1.3333,-100.0,100.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void init(void)
{
glDepthFunc(GL_LESS);
glClearColor(0.0, 0.0, 0.0, 0.0); /* Hintergrundfarbe: schwarz */
glEnable(GL_DEPTH_TEST); /* Tiefentest enablen */
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_COLOR_MATERIAL);
glMatrixMode(GL_PROJECTION);
glEnable(GL_LINE_SMOOTH);
//BuildFont(); // Build The Font (NEW)
glEnable(GL_TEXTURE_2D);
// mache_Liste();
int x;
for(x=0;x<ANZAHLSTERNE;x++){
starsx[x]=rand()*BEREICHSTERNE;
}
int y;
for( y=0;y<ANZAHLSTERNE;y++){
starsy[y]=rand()*BEREICHSTERNE;
}
int z;
for( z=0;z<ANZAHLSTERNE;z++){
starsz[z]=rand()*BEREICHSTERNE;
}
//glLoadIdentity();
//glFrustum(-1.0,1.0,-1.0,1.0,1.0,10.0);
glMatrixMode(GL_MODELVIEW);
}
void display(void)
{
GLfloat pos[4]={1.0,0.0,1.0,0.0};
glLightfv(GL_LIGHT0,GL_POSITION,pos);
glColorMaterial(GL_FRONT,GL_LIGHT0);
mache_Liste();
glLoadIdentity();
//gluLookAt ( tran_x,tran_y,tran_z,5.0,5.0,0.0, 0.0,oben,0.0 );
gluLookAt ( tran_x,tran_y,tran_z,rot_x,rot_y,rot_z, 0.0,oben,0.0 );
//glCallList(Laser_List);
//glLoadIdentity();_________________________________ _________________________MARCEL ZEIGEN
//glRasterPos3f(tran_x,tran_y,tran_z);
//glPrint("Active OpenGL Text With NeHe");
draw_Sterne();
texture_erde=LoadTextureRAW( "Data/earthTexture.raw",1 );
draw_erde();
texture_jupiter=LoadTextureRAW( "Data/saturnTexture.raw",1 );
glTranslatef(80.0,0.0,0.0);
draw_jupiter();
//glLoadIdentity();
glFlush();
glutSwapBuffers();
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
void draw_erde(void)
{
qobj = gluNewQuadric();
gluQuadricTexture( qobj,GL_TRUE);
gluSphere( qobj,10.0,10,10);
}
void draw_jupiter(void){
qobj2 = gluNewQuadric();
gluQuadricTexture( qobj2,GL_TRUE);
gluSphere( qobj2,50.0,10,10);
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize (640, 480);
glutInitWindowPosition (100,20);
glutCreateWindow ("3D Animation & Tastaturabfragen");
// glutGameModeString("1024x768:32@60");
//glutEnterGameMode();
glutDisplayFunc(display);
init();
glutReshapeFunc(reshape);
glutMouseFunc(&maus);
glutPassiveMotionFunc(&mouse); //Reaktion auf Maus in Funktion mouse(...)
glutMotionFunc(&mouse);
glutKeyboardFunc(key_down);
glutKeyboardUpFunc(key_up);
glutIdleFunc(idle);
glutMainLoop();
return 0;
}
void schuss(void){
if(Schuss==1){
mache_Liste();
glCallList(Laser_List);
}
if(Schuss == 0){
glDeleteLists( Laser_List,1);
}
}
void idle(void)
{
//schuss();
if(buffer['u'])
{
rot_x+=0.5;
}
if(buffer['o'])
{
rot_x-=0.5;
}
if(buffer['j'])
{
rot_y+=0.5;
}
if(buffer['l'])
{
rot_y-=0.5;
}
if(buffer['q'])
{
rot_z+=0.5;
}
if(buffer['e'])
{
rot_z-=0.5;
}
if(buffer['i'])
{
tran_y+=0.5;
rot_x+=0.5;
}
if(buffer['k'])
{
tran_y-=0.5;
rot_x-=0.5;
}
if(buffer['a'])
{
tran_x-=0.5;
rot_y-=0.5;
}
if(buffer['d'])
{
tran_x+=0.5;
rot_y+=0.5;
}
if(buffer['s'])
{
tran_x+=rot_x;
tran_y+=rot_y;
tran_z+=rot_z;
}
if(buffer['w'])
{
tran_x-=rot_x;
tran_y-=rot_y;
tran_z-=rot_z;
}
if (buffer['z'])
{
oben=1.0;
}
if(buffer[27])
{
exit(0); //glutLeaveGameMode();//Man benötigt die <stdlib.h> aaaaaaaaaaaaaaa
}
if(buffer['r']){
Schuss=1;
}
rot_x+=(0.01*(dx-400));
rot_y+=(0.01*(dy-300));
glutPostRedisplay();
}
void key_down(unsigned char key, int x, int y)
{
buffer[key]=1;
}
void key_up(unsigned char key, int x, int y)
{
buffer[key]=0;
}
// load a 256x256 RGB .RAW file as a texture
GLuint LoadTextureRAW( const char * filename,int wrap )
{
GLuint texture;
int width, height;
GLbyte *data;
FILE * file;
// open texture data
file = fopen( filename, "rb" );
if ( file == NULL )
{
return 0;
}
// allocate buffer
width = 256;
height = 256;
data = (GLbyte *)malloc( width * height * 3 );
// read texture data
fread( data, width * height * 3, 1, file );
fclose( file );
// allocate a texture name
glGenTextures( 1, &texture );
// select our current texture
glBindTexture( GL_TEXTURE_2D, texture );
// select modulate to mix texture with color for shading
glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
// when texture area is small, bilinear filter the closest mipmap
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
GL_LINEAR_MIPMAP_NEAREST );
// when texture area is large, bilinear filter the first mipmap
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
// if wrap is true, the texture wraps over at the edges (repeat)
// ... false, the texture ends at the edges (clamp)
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,
wrap ? GL_REPEAT : GL_CLAMP );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,
wrap ? GL_REPEAT : GL_CLAMP );
// build our texture mipmaps
gluBuild2DMipmaps( GL_TEXTURE_2D, 3, width, height,
GL_RGB, GL_UNSIGNED_BYTE, data );
// free buffer
free( data );
return texture;
}
void mouse(int mouseX, int mouseY) //Mausereignis verarbeiten
{
// Find the delta of the mouse
dx = mouseX; //- gStartX;
dy = mouseY;//- gStartY;
// Reset the deltas for the next idle call
//gStartX = mouseX;
//gStartY = mouseY;
// make something with dx and dy
rot_x+=(double)0.01*(dx-300);
rot_y+=(double)0.01*(dy-400);
}
void mouse2(int mouseX, int mouseY) //Mausereignis verarbeiten
{
// Find the delta of the mouse
dx = mouseX; //- gStartX;
dy = mouseY;//- gStartY;
// Reset the deltas for the next idle call
//gStartX = mouseX;
//gStartY = mouseY;
// make something with dx and dy
rot_x+=(double)0.01*(dx-300);
rot_y+=(double)0.01*(dy-400);
}
void maus(int button, int state, int mouseX, int mouseY){
switch(button){
case GLUT_LEFT_BUTTON:
if(state==GLUT_DOWN){
Schuss=1;
//glCallList(Laser_List);
}
if(state==GLUT_UP){
// glDeleteLists( Laser_List,1);
Schuss=0;
}
default: break;
}
}
wenn jemand was weiss bitte mal melden oder wenn jemand die Frage nicht versteht ... kann ich nachvoll ziehen
Vielen Dank für die mühe
mfg
Gsus
PS: Ich werde morgen den Code mal vom Schwachsinn befreien damit er lesbarer wird und werde es nochmal nachliefern.
ich sitze seit längern an diesem code habe ihn mir aber schon seit gut einem Jahr nicht mehr angschaut weil ich da ein Problem hatte nähmlich das ich das LookAt nicht richtig änder konnte ...
Es soll sich wie ein Raumschiff verhalten... das ist Sinn dieses Codes, denn es soll mal ein Weltraum shooter werden. Es ist eigentlich gar nicht mehr soweit weg davon... ich habe den Netzwerkteil schon etwas angefangen ("zumindest für Linux/Unix") aber das ist nicht gestand der Sache.
Problem: wenn ich mit 'w' 'a' 's' 'd' den LookAt ändere bleibt mein Sicht feld immer in der mitte. Ich kann mich zwar mit der Maus bewegen Aber ich kann mich nicht um 180° drehen.
Also man muss es am besten mal compeliert haben. Leider konnte ich die Texturen nicht mit liefern bei bedarf nach fragen und ich sende sie per email.
Es ist durch die glut Platformunabhänig als es muss nur einmal dort compeliert werden.
Danke fürs durchlesen und bitte fragt wenn ihr meine Frage nicht kapiert vielleicht kann ich es durch Antworten verständlicher machen.
//--------Header---------------------------------------------------------------
#include <GL/glut.h> //Header Glut
#include <stdlib.h> //Header stdlib für exit(0)
#include <stdio.h> //Header stdio für file-Handling
#include <math.h> //Header math für diverse Rechnungen
#include <stdarg.h> //Header File For Variable Argument Routines
//--------Header---------------------------------------------------------------
//--------Konstanten-----------------------------------------------------------
#define ANZAHLSTERNE 10000000
#define BEREICHSTERNE 1000
//--------Konstanten-----------------------------------------------------------
//--------Globale Variable-----------------------------------------------------
double rot_x=0.0, rot_y=0.0, rot_z=5.0; //Ziel Kooridinaten
double tran_x=0.0,tran_y=0.0,tran_z=-100.0; //Start Kooradinaten
float oben=-1.0; //Wo ist oben
int buffer[256]; //Keyboard Buffer
int Schuss =0; //Wird geschossen ?
double dx, dy; //Delta von Maus
double starsx[ANZAHLSTERNE]; //Sternkoordinaten X
double starsy[ANZAHLSTERNE]; //Sternkoordinaten Y
double starsz[ANZAHLSTERNE]; //Sternkoordinaten Z
GLUquadricObj *qobj,*qobj2; //Qudrics für Kugeln
GLuint Laser_List; //Laser Display Liste
GLuint texture_erde= 0; //Textur Erde
GLuint texture_jupiter= 0; //Textur Jupiter
GLuint base; // Für Font-Listen
GLfloat cnt1; // 1st Counter Used To Move Text & For Coloring
GLfloat cnt2; // 2nd Counter Used To Move Text & For Coloring
//HDC hDC=NULL; // Für Font-Listen
//--------Globale Variable-----------------------------------------------------
//--------Deklarierung der Methoden--------------------------------------------
void init(void);
void display(void);
void idle(void);
void reshape(int w, int h);
void mouse(int mouseX, int mouseY); //Mausereignis verarbeiten
void maus(int button, int state, int mouseX, int mouseY);//Mausereignis verar...
void mouse2(int mouseX, int mouseY);//Mausereignis verarbeiten
void key_up( unsigned char key, int x, int y );//Keyboard
void key_down(unsigned char key, int x, int y);
void draw_erde(void);
void draw_jupiter(void);
void draw_cube(void);
void draw_plain(void);
void draw_sphere(void);
void draw_Laser(void);
void draw_Sterne(void);
void mache_Liste(void);
void schuss(void);
int LoadGLTextures();
void draw_Laser(void);
GLuint LoadTextureRAW( const char * filename, int wrap );
//void BuildFont(void);
//void KillFont(void);
void draw_Laser(void){
double x1 = tran_x;
double y1 = tran_y;
double z1 = tran_z;
double x2 = rot_x;
double y2 = rot_y;
double z2 = rot_z;
glBegin(GL_LINES);
glLineWidth( 20.0);
glColor4f(1.0,1.0,1.0,0.0);
glVertex3f(x1-300,y1,z1);
glVertex3f(x2,y2,z2);
glColor4f(1.0,0.0,0.0,0.0);
glVertex3f(x1,y1,z1);
glVertex3f(x2,y2,z2);
glLineWidth(2.0);
glEnd();
}
void mache_Liste(void){
Laser_List= glGenLists (1);
glNewList(Laser_List, GL_COMPILE);
draw_Laser();
glEndList();
}
void draw_Sterne(void){
glBegin(GL_POINTS);
glPointSize( 5.0);
glColor3f(1.0,1.0,1.0); //Weiss
int k=0;
for(;k<ANZAHLSTERNE;k++);
{
glVertex3f(starsx[k],starsy[k],starsz[k]);
}
glEnd();
}
void reshape (int w, int h)
{
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(22.5,1.3333,-100.0,100.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void init(void)
{
glDepthFunc(GL_LESS);
glClearColor(0.0, 0.0, 0.0, 0.0); /* Hintergrundfarbe: schwarz */
glEnable(GL_DEPTH_TEST); /* Tiefentest enablen */
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_COLOR_MATERIAL);
glMatrixMode(GL_PROJECTION);
glEnable(GL_LINE_SMOOTH);
//BuildFont(); // Build The Font (NEW)
glEnable(GL_TEXTURE_2D);
// mache_Liste();
int x;
for(x=0;x<ANZAHLSTERNE;x++){
starsx[x]=rand()*BEREICHSTERNE;
}
int y;
for( y=0;y<ANZAHLSTERNE;y++){
starsy[y]=rand()*BEREICHSTERNE;
}
int z;
for( z=0;z<ANZAHLSTERNE;z++){
starsz[z]=rand()*BEREICHSTERNE;
}
//glLoadIdentity();
//glFrustum(-1.0,1.0,-1.0,1.0,1.0,10.0);
glMatrixMode(GL_MODELVIEW);
}
void display(void)
{
GLfloat pos[4]={1.0,0.0,1.0,0.0};
glLightfv(GL_LIGHT0,GL_POSITION,pos);
glColorMaterial(GL_FRONT,GL_LIGHT0);
mache_Liste();
glLoadIdentity();
//gluLookAt ( tran_x,tran_y,tran_z,5.0,5.0,0.0, 0.0,oben,0.0 );
gluLookAt ( tran_x,tran_y,tran_z,rot_x,rot_y,rot_z, 0.0,oben,0.0 );
//glCallList(Laser_List);
//glLoadIdentity();_________________________________ _________________________MARCEL ZEIGEN
//glRasterPos3f(tran_x,tran_y,tran_z);
//glPrint("Active OpenGL Text With NeHe");
draw_Sterne();
texture_erde=LoadTextureRAW( "Data/earthTexture.raw",1 );
draw_erde();
texture_jupiter=LoadTextureRAW( "Data/saturnTexture.raw",1 );
glTranslatef(80.0,0.0,0.0);
draw_jupiter();
//glLoadIdentity();
glFlush();
glutSwapBuffers();
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
void draw_erde(void)
{
qobj = gluNewQuadric();
gluQuadricTexture( qobj,GL_TRUE);
gluSphere( qobj,10.0,10,10);
}
void draw_jupiter(void){
qobj2 = gluNewQuadric();
gluQuadricTexture( qobj2,GL_TRUE);
gluSphere( qobj2,50.0,10,10);
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize (640, 480);
glutInitWindowPosition (100,20);
glutCreateWindow ("3D Animation & Tastaturabfragen");
// glutGameModeString("1024x768:32@60");
//glutEnterGameMode();
glutDisplayFunc(display);
init();
glutReshapeFunc(reshape);
glutMouseFunc(&maus);
glutPassiveMotionFunc(&mouse); //Reaktion auf Maus in Funktion mouse(...)
glutMotionFunc(&mouse);
glutKeyboardFunc(key_down);
glutKeyboardUpFunc(key_up);
glutIdleFunc(idle);
glutMainLoop();
return 0;
}
void schuss(void){
if(Schuss==1){
mache_Liste();
glCallList(Laser_List);
}
if(Schuss == 0){
glDeleteLists( Laser_List,1);
}
}
void idle(void)
{
//schuss();
if(buffer['u'])
{
rot_x+=0.5;
}
if(buffer['o'])
{
rot_x-=0.5;
}
if(buffer['j'])
{
rot_y+=0.5;
}
if(buffer['l'])
{
rot_y-=0.5;
}
if(buffer['q'])
{
rot_z+=0.5;
}
if(buffer['e'])
{
rot_z-=0.5;
}
if(buffer['i'])
{
tran_y+=0.5;
rot_x+=0.5;
}
if(buffer['k'])
{
tran_y-=0.5;
rot_x-=0.5;
}
if(buffer['a'])
{
tran_x-=0.5;
rot_y-=0.5;
}
if(buffer['d'])
{
tran_x+=0.5;
rot_y+=0.5;
}
if(buffer['s'])
{
tran_x+=rot_x;
tran_y+=rot_y;
tran_z+=rot_z;
}
if(buffer['w'])
{
tran_x-=rot_x;
tran_y-=rot_y;
tran_z-=rot_z;
}
if (buffer['z'])
{
oben=1.0;
}
if(buffer[27])
{
exit(0); //glutLeaveGameMode();//Man benötigt die <stdlib.h> aaaaaaaaaaaaaaa
}
if(buffer['r']){
Schuss=1;
}
rot_x+=(0.01*(dx-400));
rot_y+=(0.01*(dy-300));
glutPostRedisplay();
}
void key_down(unsigned char key, int x, int y)
{
buffer[key]=1;
}
void key_up(unsigned char key, int x, int y)
{
buffer[key]=0;
}
// load a 256x256 RGB .RAW file as a texture
GLuint LoadTextureRAW( const char * filename,int wrap )
{
GLuint texture;
int width, height;
GLbyte *data;
FILE * file;
// open texture data
file = fopen( filename, "rb" );
if ( file == NULL )
{
return 0;
}
// allocate buffer
width = 256;
height = 256;
data = (GLbyte *)malloc( width * height * 3 );
// read texture data
fread( data, width * height * 3, 1, file );
fclose( file );
// allocate a texture name
glGenTextures( 1, &texture );
// select our current texture
glBindTexture( GL_TEXTURE_2D, texture );
// select modulate to mix texture with color for shading
glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
// when texture area is small, bilinear filter the closest mipmap
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
GL_LINEAR_MIPMAP_NEAREST );
// when texture area is large, bilinear filter the first mipmap
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
// if wrap is true, the texture wraps over at the edges (repeat)
// ... false, the texture ends at the edges (clamp)
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,
wrap ? GL_REPEAT : GL_CLAMP );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,
wrap ? GL_REPEAT : GL_CLAMP );
// build our texture mipmaps
gluBuild2DMipmaps( GL_TEXTURE_2D, 3, width, height,
GL_RGB, GL_UNSIGNED_BYTE, data );
// free buffer
free( data );
return texture;
}
void mouse(int mouseX, int mouseY) //Mausereignis verarbeiten
{
// Find the delta of the mouse
dx = mouseX; //- gStartX;
dy = mouseY;//- gStartY;
// Reset the deltas for the next idle call
//gStartX = mouseX;
//gStartY = mouseY;
// make something with dx and dy
rot_x+=(double)0.01*(dx-300);
rot_y+=(double)0.01*(dy-400);
}
void mouse2(int mouseX, int mouseY) //Mausereignis verarbeiten
{
// Find the delta of the mouse
dx = mouseX; //- gStartX;
dy = mouseY;//- gStartY;
// Reset the deltas for the next idle call
//gStartX = mouseX;
//gStartY = mouseY;
// make something with dx and dy
rot_x+=(double)0.01*(dx-300);
rot_y+=(double)0.01*(dy-400);
}
void maus(int button, int state, int mouseX, int mouseY){
switch(button){
case GLUT_LEFT_BUTTON:
if(state==GLUT_DOWN){
Schuss=1;
//glCallList(Laser_List);
}
if(state==GLUT_UP){
// glDeleteLists( Laser_List,1);
Schuss=0;
}
default: break;
}
}
wenn jemand was weiss bitte mal melden oder wenn jemand die Frage nicht versteht ... kann ich nachvoll ziehen
Vielen Dank für die mühe
mfg
Gsus
PS: Ich werde morgen den Code mal vom Schwachsinn befreien damit er lesbarer wird und werde es nochmal nachliefern.