ďťż

Ładny brzuch

witam,
pytanie odnoszace sie w duzej mierze do wypowiedzi i pomyslow znalezionych w innym poscie http://www.ks-eksper...?TOPIC_ID=26680, mianowicie
nie potrafie zniwelowac efektu splaczenia np kolka gdy formatka jest ustawiona jak w fragmencie kodu ponizej (gdy jest 600 na 600 wszystko jest w porzadku, ale potrzebuje 800 na 600), nawet zmiany poprzez gluPerspective nie daje pozadanego rezulatatu, wciaz kolka sa raczej elipsami, moze mial ktos taki problem i udalo mu sie z tym poradzic, z gory dziekuje za wszelkie sugestie

fragment kodu:

void TForm1::View(unsigned int Width, unsigned int Height)
{
glViewport(0,0,Width,Height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f,(GLfloat)Width/(GLfloat)Height,0.0f,0.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}

//--------------------------------------------------------------------------

void __fastcall TForm1::FormDestroy(TObject *Sender)
{
wglMakeCurrent (NULL, NULL);
wglDeleteContext (hRC);
ReleaseDC(Form1->Handle, DC);

}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormShow(TObject *Sender)
{
InitView(Form1->Handle);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormPaint(TObject *Sender)
{
Form1->ClientHeight = 600;
Form1->ClientWidth = 800;
View(Form1->ClientWidth,Form1->ClientHeight);
}
//---------------------------------------------------------------------------



Ja powiem, że na początku bezmyślnie skorzystałem konfigurację funkcji gluPerspective zaprezentowaną w Ekspercie (tam w miejsce rozmiaru obrazu wpisywali 1 ) i też byłem zdiwiony, że większość obiektów wygląda nienaturalnie. Dopiero później strzeliłem sobie karpia, kiedy przeczytałem na Nehe, że trzeba tam wstawić wynik dzielenia wymiarów obrazów. Przy okazji, w twoim kodzie jest mały ale BARDZO poważny błąd:
gluPerspective(45.0f,(GLfloat)Width/(GLfloat)Height,0.0f,0.0f);

Nigdy, ale to NIGDY nie wstawiaj tam zera! pierwszy zaznaczony parametr to jest minimalne pole widzenia (rysowania obiektów) i MUSI być większa od zera (możesz tam nawet wstawić 0.000001, ale byle nie 0!), drugi jest maksymalną widocznością obserwatora i też MUSI być większe od zera (zalecana jest wartość 100 razy większą od minimalnej, ale można też większą).

Postaraj się to może coś będzie.
http://www.members.l...rafika/scr1.jpg
http://www.members.l...rafika/scr2.jpg

I am the REAL Noname
Moja strona: www.coderulers.prv.pl Proszę o pomoc w rozkręceniu mojego forum
C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, it blows away your whole leg." - Bjarne Stroustrup, twórca języka C++

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •