CodeCrafterCpp
Erfahrenes Mitglied
Hallo,
Ich bin heute wieder angefangen mich mit den Thema Opengl und .obj laden.
Ich habe einen kleinen Code:
Jetzt möchte ich aber das dieser Teil in einer Funktion steht:
Aber dabei bekomme ich nur Fehler muss ich da auch was zurück geben? Und ich habe gesehen das andere es mit Struct oder so machen....aber ich den Tutorial über C++ stand das es eigentlich C ist und das lieber class nutzen soll weil das besser oder so ist...stimmt das?
mfG
Ich bin heute wieder angefangen mich mit den Thema Opengl und .obj laden.
Ich habe einen kleinen Code:
C++:
#include <iostream>
#include <windows.h>
#include <SDL.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <string>
#include<fstream>
using namespace std;
class Quad
{
public:
float e1[3];
float e2[3];
float e3[3];
float e4[3];
};
void auslesen(string Pfade)
{
int i = 0;
ifstream file(Pfade);
string buffer;
while(true)
{
getline(file,buffer);
if(!buffer.find('v'))
{
cout << buffer << endl;
}
if(i<20)
{
i++;
}else
{
break;
}
}
file.close();
}
void init()
{
glClearColor(0.0,0.0,0.0,1.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0,640.0/480.0,5.0,500.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void display()
{
Quad s1;
s1.e1[0] = 1.0000f;
s1.e1[1] = -1.0000f;
s1.e1[2] = -5.0f;
s1.e2[0] = -1.0000f;
s1.e2[1] = -1.0000f;
s1.e2[2] = -5.0f;
s1.e3[0] = -1.0000f;
s1.e3[1] = 1.0000f;
s1.e3[2] = -5.0f;
s1.e4[0] = 1.0000f;
s1.e4[1] = 1.0000f;
s1.e4[2] = -5.0f;
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_QUADS);
glVertex3f(s1.e1[0], s1.e1[1], s1.e1[2]);
glVertex3f(s1.e2[0], s1.e2[1], s1.e2[2]);
glVertex3f(s1.e3[0], s1.e3[1], s1.e3[2]);
glVertex3f(s1.e4[0], s1.e4[1], s1.e4[2]);
/*glVertex3f(1.000000, -1.000000,5.0);
glVertex3f(-1.000000, -1.000000,5.0);
glVertex3f(-1.000000, 1.000000,5.0);
glVertex3f(1.000000, 1.000000,5.0);
glVertex3f(1.000000, 1.000000,-5.0);
glVertex3f(1.000000, 1.000000,5.0);
glVertex3f(1.000000, -1.000000,5.0);
glVertex3f(1.000000, -1.000000,-5.0);
glVertex3f(1.000000, -1.000000,-5.0);
glVertex3f(1.000000, -1.000000,5.0);
glVertex3f(-1.000000, -1.000000,5.0);
glVertex3f(-1.000000, -1.000000,-5.0);
glVertex3f(-1.000000, -1.000000,-5.0);
glVertex3f(-1.000000, -1.000000,5.0);
glVertex3f(-1.000000, 1.000000,5.0);
glVertex3f(-1.000000, 1.000000,-5.0);
glVertex3f(-1.000000, 1.000000,-5.0);
glVertex3f(-1.000000, 1.000000,5.0);
glVertex3f(1.000000, 1.000000,5.0);
glVertex3f(1.000000, 1.000000,-5.0);*/
glEnd();
}
int main(int, char**)
{
auslesen("C://Users/Jonas/Desktop/test.obj");
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Surface* screen=SDL_SetVideoMode(640,480,32,SDL_SWSURFACE|SDL_OPENGL);
bool running=true;
Uint32 start;
SDL_Event event;
init();
while(running)
{
start=SDL_GetTicks();
while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_QUIT:
running=false;
break;
}
}
display();
SDL_GL_SwapBuffers();
if(1000/30>(SDL_GetTicks()-start))
SDL_Delay(1000/30-(SDL_GetTicks()-start));
}
SDL_Quit();
return 0;
}
Jetzt möchte ich aber das dieser Teil in einer Funktion steht:
C++:
Quad s1;
s1.e1[0] = 1.0000f;
s1.e1[1] = -1.0000f;
s1.e1[2] = -5.0f;
s1.e2[0] = -1.0000f;
s1.e2[1] = -1.0000f;
s1.e2[2] = -5.0f;
s1.e3[0] = -1.0000f;
s1.e3[1] = 1.0000f;
s1.e3[2] = -5.0f;
s1.e4[0] = 1.0000f;
s1.e4[1] = 1.0000f;
s1.e4[2] = -5.0f;
Aber dabei bekomme ich nur Fehler muss ich da auch was zurück geben? Und ich habe gesehen das andere es mit Struct oder so machen....aber ich den Tutorial über C++ stand das es eigentlich C ist und das lieber class nutzen soll weil das besser oder so ist...stimmt das?
mfG
Zuletzt bearbeitet von einem Moderator: