CodeCrafterCpp
Erfahrenes Mitglied
Hallo,
Irgendwie kommt wenn ich das Programm starte ganz viele Zahlen auch die richtigen aber er hört einfach nicht auf...was ist falsch hab es auch schon mit For-Schleife versucht bringt auch nichts. Wenn ich die Daten bxf, byf und bzf ausgebe bekomme ich komische Zeichen und nicht die Float Werte.
Der Code:
Achja hier nochmal die Datei die ausgelesen werden soll:
mfG
Irgendwie kommt wenn ich das Programm starte ganz viele Zahlen auch die richtigen aber er hört einfach nicht auf...was ist falsch hab es auch schon mit For-Schleife versucht bringt auch nichts. Wenn ich die Daten bxf, byf und bzf ausgebe bekomme ich komische Zeichen und nicht die Float Werte.
Der Code:
C++:
#include <iostream>
#include <windows.h>
#include <SDL.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <string>
#include <fstream>
#include <sstream>
using namespace std;
string bx;
string by;
string bz;
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();
}
class Quad
{
public:
float ex[10];
float ey[10];
float ez[10];
};
void auslesen(string Pfade, class Quad *s1)
{
int i = 0;
int e = 0;
ifstream file(Pfade);
string buffer;
size_t pos1;
size_t pos2;
float bxf, byf, bzf;
while(true)
{
getline(file,buffer);
if(!buffer.find('v'))
{
pos1 = buffer.find(" ");
buffer = buffer.substr(pos1);
pos2 = buffer.find(" ", pos1);
bx = buffer.substr(pos1, pos2);
pos1 = buffer.find(" ", pos2);
by = buffer.substr(pos2, pos1);
pos2 = buffer.find(" ", pos1);
bz = buffer.substr(pos1, pos2);
cout << bx << endl << by << endl << bz << endl;
istringstream bx;
bx >> bxf;
istringstream by;
bx >> byf;
istringstream bz;
bx >> bzf;
s1->ex[i] = bxf;
s1->ex[i] = byf;
s1->ex[i] = bzf;
i++;
}
if(e<20)
{
e++;
}else
{
break;
}
}
file.close();
}
void display()
{
Quad s1;
auslesen("C://Users/Jonas/Desktop/test.obj",&s1);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_QUADS);
glVertex3f(s1.ex[0], s1.ey[0], s1.ez[0]);
glVertex3f(s1.ex[1], s1.ey[1], s1.ez[1]);
glVertex3f(s1.ex[2], s1.ey[2], s1.ez[2]);
glVertex3f(s1.ex[3], s1.ey[3], s1.ez[3]);
/*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**)
{
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;
}
Achja hier nochmal die Datei die ausgelesen werden soll:
Code:
# Blender v2.62 (sub 0) OBJ File: ''
# www.blender.org
mtllib test.mtl
o Cube
v 1.000000 -1.000000 -1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 -1.000000 1.000000
v -1.000000 -1.000000 -1.000000
v 1.000000 1.000000 -0.999999
v 0.999999 1.000000 1.000001
v -1.000000 1.000000 1.000000
v -1.000000 1.000000 -1.000000
usemtl Material
s off
f 1 2 3 4
f 5 8 7 6
f 1 5 6 2
f 2 6 7 3
f 3 7 8 4
f 5 1 4 8
mfG
Anhänge
Zuletzt bearbeitet von einem Moderator: