jazyk: C++
Zaujímalo by ma, ako by som si mohol vytvoriť vlastný typ súboru(čo najjednoduhší), ktorý by v sebe držal súradnice bodov v 3d priestore a následne by som si z neho vytiahol informácie o týchto bodoch. Tie by som následne zobrazil pomocou OpenGL. Naozaj nemám najmenšie tušenie, kde by som mal začať, tak sa obraciam na vás.
(medzitým skúsim niečo vygúgliť)
/áno, nudím sa/
vytvorenie vlastného typu súboru a jeho načítanie
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: vytvorenie vlastného typu súboru a jeho načítanie
tri čísla ooddelené buď medzerou v jednom riadku, alebo každé do nového
Re: vytvorenie vlastného typu súboru a jeho načítanie
To je všetko? Takže si vpíšem do textového súboru nejaké tri čísla a tie v c++ načítam ako súradnice bodu?
tak načítavanie tých čísel mám, len neviem ako OpenGL prinútit aby mi ich zobrazilo. Urobím si v zdrojáku trochu poriadok a pošlem ho sem.
EDIT: tak tu to je: pokúsil som sa aby sa zo súboru "point.b3m" načítali súradnice prvého bodu. No neviem, ako priradiť jedno číslo k jednej osi súradnice.
main.cpp
(pardon, že mi ten štvoruholník trochu "ušiel")
point.b3m
EDIT: to číslo zo súboru som dal načítať ako normálu štvoruholníka
. Už som to opravil tak, že to číslo v súbore je súradnica prvého bodu štvoruholníka
tak načítavanie tých čísel mám, len neviem ako OpenGL prinútit aby mi ich zobrazilo. Urobím si v zdrojáku trochu poriadok a pošlem ho sem.
EDIT: tak tu to je: pokúsil som sa aby sa zo súboru "point.b3m" načítali súradnice prvého bodu. No neviem, ako priradiť jedno číslo k jednej osi súradnice.
main.cpp
Kód: Vybrať všetko
#include <iostream>
#include <fstream>
#include <gl/GLUT.h>
using std::cout;
using std::endl;
using std::ifstream;
void Display(void){
//initialising of that stuff
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glLoadIdentity();
glEnable(GL_COLOR_MATERIAL);
glTranslatef(0.0, 0.0, -2.0);
glRotatef(30,0.0,1.0,.0);
glRotatef(20,0.0,0.0,1.0);
ifstream indata; //
int num; // tato premenna by mala ziskavat hodnoty zo suboru
indata.open("point.b3m"); // otvorenie suboru
indata >> num;
while ( !indata.eof() ) { // malo by to citat vzdy dalsie cislo v subore az kym sa nedostane na koniec
cout << "cislo: " << num << endl;
indata >> num;
}
indata.close();
cout << "Som na konci suboru" << endl;
glBegin(GL_QUADS);
glNormal3f(0.0,0.0,0.0);
glVertex3f(num,num,num);
glVertex3f(0.0, 1.0,0.0);
glVertex3f(1.0, 1.0,0.0);
glVertex3f(1.0, 0.0,0.0);
glEnd();
glutSwapBuffers();
}
void init(){
glEnable(GL_DEPTH_TEST);
glClearColor(1.0,1.0,1.0,1.0);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
}
void Resize(int w, int h){
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glViewport(0, 0, w, h);
gluPerspective(45,(double)w/(double)h,1,100);
glMatrixMode(GL_MODELVIEW);}
int main()
{
glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE);
glutInitWindowSize(800, 600);
glutInitWindowPosition(10, 10);
glutCreateWindow("Model_loader");
glutDisplayFunc(init);
glutIdleFunc(Display);
glutReshapeFunc(Resize);
init();
glutMainLoop();
return 0;
}
point.b3m
Kód: Vybrať všetko
0 0 0Re: vytvorenie vlastného typu súboru a jeho načítanie
1. Podľa mňa je jednoduchšie použiť binárny súbor (jednoduchšie pre načítavanie, nie pre editovanie).
2. Prečo načítavaš len jedno číslo, keď chceš čísla 3? (a ak ide o trojuholník tak potrebuješ 9 čísel)
2. Prečo načítavaš len jedno číslo, keď chceš čísla 3? (a ak ide o trojuholník tak potrebuješ 9 čísel)
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: vytvorenie vlastného typu súboru a jeho načítanie
ty si to num stále prepisuješ, ak budú rôzne hodnoty ako tri nuly tak ti to nebude správne fungovať
Re: vytvorenie vlastného typu súboru a jeho načítanie
chrono:
1. aký je tam rozdiel, ak sa smiem tak hlúpo spýtať?
EDIT: (čo sa týka jeho vytvárania)
2 no, chcel som len aby mi to z toho súboru načítalo aspoň "niečo". Ni je mi jasné ako priradiť jednu trojicu číslic k jednému bodu a potom z dalších trojíc číslic získať dalšie súradnice.
audiotrack: Môžem nejako načítať číslo do premennej num, zadať ho ako časť súradnice, načítať novú hodnotu premennej num a tú následne zadať ako dalšiu čast súradnice atd?
Týmto sa zaoberám prvý raz a absolútne neviem, ako mám postupovať.
1. aký je tam rozdiel, ak sa smiem tak hlúpo spýtať?
2 no, chcel som len aby mi to z toho súboru načítalo aspoň "niečo". Ni je mi jasné ako priradiť jednu trojicu číslic k jednému bodu a potom z dalších trojíc číslic získať dalšie súradnice.
audiotrack: Môžem nejako načítať číslo do premennej num, zadať ho ako časť súradnice, načítať novú hodnotu premennej num a tú následne zadať ako dalšiu čast súradnice atd?
Týmto sa zaoberám prvý raz a absolútne neviem, ako mám postupovať.
Re: vytvorenie vlastného typu súboru a jeho načítanie
Pri textovom formáte môžeš priamo upravovať ten súbor v akomkoľvek textovom editore. Ak tam ale budú binárne dáta, budeš si musieť urobiť nejaký program (buď priamo editor, to je ale zložité, alebo nejaký konvertor, napr. text ->binárny súbor a možno aj naopak, alebo urobíš jednoduchý program napr. v C a tam si potrebné dáta dáš do poľa a uložíš to do toho súboru).