opengl GL_POINTS werden nicht richtig dargestellt



  • Moin,

    folgendes, wenn ich Versuche mehrere Punkte zu setzen wird einer nie angezeigt quasi immer pixel-1 werden angezeigt. Nun hab ich festgestellt das es aber nur unter Linux bei mir passiert unter Windows werden alle Punkte angezeigt. Da ich aber vorzugsweise unter Linux code wär ne Lösung nett 🙂 achja selbe Phänomen gibts es bei gestrichelten Linien.

    void initialisiereSzene(void) {
    	glClearColor(1.0, 1.0, 1.0, 1.0);// Hintergrundfarbe
    	glMatrixMode(GL_PROJECTION);
    	glLoadIdentity();
    	gluOrtho2D(0.0, 10.0, 0.0, 10.0);// Projektion (Kameraausschnitt)
    	glMatrixMode(GL_MODELVIEW);
    	glLoadIdentity();
    }
    
    void zeichneSzene (void) {
    	GLfloat vec1[2] = {2.0, 2.0};			
    	GLfloat	vec2[2] = {2.0, 3.0};
    	GLfloat	vec3[2] = {2.0, 9.0};
    	glClear(GL_COLOR_BUFFER_BIT);			
    	glColor3f(0.0, 0.0, 1.0);			
    	glPointSize(5);
    	glBegin(GL_POINTS);				
    		glVertex2fv(vec1);
    		glVertex2fv(vec2);
    		glVertex2fv(vec3);
    	glEnd();
    	glFlush();								// Ausgabe auf dem Bildschirm
    }
    
    int main (int argc, char** argv) {
    	glutInit(&argc, argv);
    	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    	glutInitWindowSize(200, 200);
    	glutInitWindowPosition(200, 200);
    	glutCreateWindow("OpenGL Punkte");
    	initialisiereSzene();
    	glutDisplayFunc(zeichneSzene);
    	glutMainLoop();
    


  • Hallo,

    wir haben für das Ausetzen von OGL unter Linux folgende Anleitung bekommen:

    1. windows.h auskommentieren:
    //#include <windows.h>
    
    2. include Anweisungen an korrekten Pfad anpassen (GL/ anstatt gl/):
    #include <GL/gl.h>
    #include <GL/glu.h>
    #include <GL/glut.h>
    
    3. Datentyp BOOL klein schreiben:
    bool bCull = FALSE;
    bool bOutline = FALSE;
    bool bDepth = TRUE;
    
    4. Wertzuweisung zu Konstanten TRUE und FALSE:
    #define TRUE    1
    #define FALSE   0
    
    5. Gegebenfalls ist eine Timer Funktion zu implementieren, um eine
    CPU-Last von 100% zu vermeiden:
    
    Definition:
    void myTimer(int fps)
    {
      usleep(10000/fps);     // x fps
    }
    glut-Zuweisung:        glutTimerFunc(0,myTimer,1);
    Aufruf:         myTimer(100);
    
     Beispiel für ein 'Makefile': (der Name des Makefiles darf nicht „make“ sein !)
     Beachten Sie das make tab-sensitiv ist (d.h. es muss ein tab zu Beginn der Zeile g++ ...
     und zu Beginn der Zeile rm –f ... eingetragen sein).
    ---------------------------------------------------------------------------------------
    LIBDIR=-L/usr/X11R6/lib -L/usr/include
    LIBS=-lGL -lGLU -lglut –lm –lXmu –lX11 -lXi
    TARGET=triangle
    ${TARGET}: triangle.c
             g++ -o ${TARGET} ${LIBDIR} ${LIBS} triangle.c
    clean:
             rm -f ${TARGET}
    ---------------------------------------------------------------------------------------
    Aufruf (einfach): make
    
    Aufruf (erweiterte Funktionen): make clean && clear && make && triangle
    
    Diese kleine Zusammenfassung sollte ein problemloses Programmieren
    unter Linux ermöglichen.
    

    Vielleicht hilfts was.

    Gruß



  • Lass mal testweise glFlush() weg.
    edit: Und erzeuge unter Windows evtl. doch besser ein Double-Buffered Window..
    rya.



  • klappt leider alles nicht so richtig, ohne glflush wird garnichts gezeichnet



  • codyjack schrieb:

    klappt leider alles nicht so richtig, ohne glflush wird garnichts gezeichnet

    Mach mal ein DoubleBuffered Window und benutze statt glFlush() glutSwapBuffers().
    rya.


Anmelden zum Antworten