Skocz do zawartości

[C++ | OpenGL] Problem z pętlą


Chiobio

Polecane posty

Witam:)

 

Celem ćwiczenia jest stworzenie czegoś na wzór wiatraku.

 

#include "obiekty.h"

int Rysuj_Wiatrak(GLfloat K, GLfloat R)
{
       for (int i=0; i <= K; i++)
       {
               glPushMatrix();
               glBegin(GL_TRIANGLES);

               glRotatef ((360/K)*i , 0.0f, 0.0f, 1.0f);
               glColor3f (1.0f, 0.3f, 0.0f);
               glVertex3f (0.0f, 2.0f, 0.0f);
               glVertex3f (R, 2.0f, 0.0f);
               glVertex3f (R, 4.0f, 2.0f);

               glPopMatrix();
               glEnd();
               glDisable(GL_TRIANGLES);
       }


       return 0;

// K - ilość trójkątów, czyli "łopat" wiatraka
// R - promień wiatraka

}

 

Problem jest następujący:

 

"Pierwsza" pętla ma narysować trójkąt. Kolejna ma również podobne zadanie, jednak ma on być już obrócony względem punktu (0.0f, 2.0f, 0.0f), ale tak aby płaszczyzny owych trójkątów były do siebie równoległe. I tak do końca.

 

I tu pojawia się problem. Pomimo, że program się kompiluje, to niestety rysowany jest tylko 1 trójkąt, natomiast kolejny, już po obrocie, nie.

 

Proszę o pomoc:)

 

W złym miejscu napisałem temat - przepraszam!:)

Link do komentarza
Udostępnij na innych stronach

1. glRotatef nie można używać pomiędzy glBegin/glEnd. (nalezy to dac po glPushMatrix() w tym przypadku)

2. glPopMatrix powinno znaleźć się po glEnd a nie przed bo też się tego tam nie używa...

3. GL_TRIANGLES w glDisable nie ma sensu wywal tą linijke nie ma takiego czegoś w openglu :)

 

Ogólnie radzę poczytać troszkę więcej o openglu bo o stosie macierzy i rysowaniu prymitywów. to tyle jak na razie.

www.spider.dathox.com :)

Link do komentarza
Udostępnij na innych stronach

1. glRotatef nie można używać pomiędzy glBegin/glEnd. (nalezy to dac po glPushMatrix() w tym przypadku)

2. glPopMatrix powinno znaleźć się po glEnd a nie przed bo też się tego tam nie używa...

3. GL_TRIANGLES w glDisable nie ma sensu wywal tą linijke nie ma takiego czegoś w openglu :)

 

Ogólnie radzę poczytać troszkę więcej o openglu bo o stosie macierzy i rysowaniu prymitywów. to tyle jak na razie.

 

Wielkie dzięki!:) Dopiero zacząłem naukę OpenGL i na pewno doczytam:)

Link do komentarza
Udostępnij na innych stronach

Witam:)

 

Dzięki pomocy Spider100 udało mi się zrobić, żeby program rysował łopaty wiatraka. Pojawił się jednak kolejny problem, którego nie mogę rozwiązać. Chcę połączyć kwadratem łopatę 1 z łopatą 2-gą narysowaną po rotacji itd.

 

Wykombinowałem to, co widać w drugiej pętli, a dokładnie coś takiego:

 

glVertex3f (R, 0.0f, 0.0f);
glVertex3f (R, 4.0f, 2.0f);
glRotatef ((360/K)*(w+1), 0.0f, 1.0f, 0.0f);
glVertex3f (R, 0.0f, 0.0f);
glVertex3f (R, 4.0f, 2.0f);
%lj9'+jjh)zzŻ+(ęór$gWŁęŚ3'3zkŁ-jxŁkjyĄŁ-i0i,Irś+ę-#k*kĄ^śŚŻ+.ę)j0i*ł'!ś,Źjx<Y+Z:n\"^zXh&
0ĘnWŚ6ź).6juzgyh)zvŚźv AzjW3z9{6śĄżr$)I}]ŃŹĄ1ą,1ąH)(Ąą,ŹŹ((ąAĄ5Ń(ąIŃŃ,(ą       Ą1}QI%91L((ą
ą(ąYŃ(ąYŃĄH(ąYŃĄH((ą(ąA5Ń(((Ąą,ŹŹ((ąAĄ5Ń(ąIŃŃ,(ą Ą1}EUL((ą
ą(ąYŃĄH(ąYŃĄH(ąIŃŃ,ĄŹ(ąYŃĄH(ąYŃĄH((ą(ąA5Ń(((Ń)

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...