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.