@duffman: fajnie by było, jakbyś napisał, co się dzieje? Nic nie widać na ekranie po prostu?
EDIT: ech, nie doczytałem. Czyli się nie wyświetla. Możesz wkleić więcej kodu? Bo znaczenie może mieć np ustawianie glCullFace (zależnie od niego pokazuje obie strony poligonów, tylko ściany z wierzchołkami w koleności zgodnej z ruchem wskazówek zegara, albo przeciwnej). Albo może masz oświetlenie włączone i brak świateł i wszystko jest czarne. Może jest problem z
to teoretycznie powinno sprawić, że powyższy kwadrat będzie przesunięty względem środka okienka o przekazane funkcji argumenty, ale sprawia tylko, że funkcja nie działa. Zdaję sobie sprawę, że to przestarzała metoda, ale skopiowałem wszystko z
@duffman: ale masz gdzieś glInit, ustawiasz jakoś macierz GLPROJECTIONMATRIX ? Pokaż cały kod to nie będzie niedomówień. A, i nie zapomnij o glSwapBuffers :)
Ok, wg mnie to jest problem spowodowany tym, że po gluLookAt w ZmienRozmiarEkranu jest ustawiona macierz MODELVIEW dobrze, ale jak dodajesz ten kod w draw, który robi glLoadIdentity(); to czyścisz tą macierz na czas rysowania modelu. Wywal tą linijkę z draw i daj znać, czy pomogło.
Znajdzie mi ktoś błąd w tej funkcji (c++)?
void draw(float PositionX, float PositionY)
{
glMatrixMode(GLMODELVIEW);
glPushMatrix();
glLoadIdentity();
glTranslatef(PositionX, PositionY, 0);
GLfloat RED = 1, GREEN = 1, BLUE = 1;
glColor3f(RED, GREEN, BLUE);
glBegin(GLPOLYGON);
glVertex2f(-0.1, 0.1);
glVertex2f(0.1, 0.1);
glVertex2f(0.1, -0.1);
glVertex2f(-0.1, -0.1);
glEnd();
glPopMatrix;
}
@duffman: glPopMatrix();?
Niestety ciągle nie wyświetla kwadratu...
EDIT: ech, nie doczytałem. Czyli się nie wyświetla. Możesz wkleić więcej kodu? Bo znaczenie może mieć np ustawianie glCullFace (zależnie od niego pokazuje obie strony poligonów, tylko ściany z wierzchołkami w koleności zgodnej z ruchem wskazówek zegara, albo przeciwnej). Albo może masz oświetlenie włączone i brak świateł i wszystko jest czarne. Może jest problem z
glColor3f(RED, GREEN, BLUE);
glBegin(GLPOLYGON);
glVertex2f(-0.1, 0.1);
glVertex2f(0.1, 0.1);
glVertex2f(0.1, -0.1);
glVertex2f(-0.1, -0.1);
glEnd();
glPopMatrix;
@duffman: Ta część tworzy na ekranie kwadrat.
glMatrixMode(GLMODELVIEW);
glPushMatrix();
glLoadIdentity();
glTranslatef(PositionX, PositionY, 0);
to teoretycznie powinno sprawić, że powyższy kwadrat będzie przesunięty względem środka okienka o przekazane funkcji argumenty, ale sprawia tylko, że funkcja nie działa. Zdaję sobie sprawę, że to przestarzała metoda, ale skopiowałem wszystko z
Mam nadzieję, że skopiowałem wszystko- mam to w kilku pikach. Ale funkcja z zakomentowanym tym drugim fragmentem wyświetla kwadracik bez problemu.
#include
#include
#include
using namespace std;
void ZmienRozmiarEkranu(int w, int h)
{
float ratio = 1.0* w / h;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glViewport(0, 0, w, h); //ustalenie rzutni
gluPerspective(45, ratio, 1, 1000);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, -1.0, 0.0f, 1.0f, 0.0f);
}
void Przerysuj(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@smaleckg: nope, informatyka na Polibudzie Poznańskiej.