1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

und nocheinmal opengl

Dieses Thema im Forum "Mac OS Entwickler, Programmierer" wurde erstellt von thurin, 27.04.2004.

  1. thurin

    thurin Thread Starter MacUser Mitglied

    Mitglied seit:
    24.03.2004
    Beiträge:
    77
    Zustimmungen:
    0
    also ich habs einam geschaft opengl im vollbildmodus zu initialisieren.. allerdings bleiben alle opengl befehle ohne wirkung.. sprich: der bildschirm bleibt schwarz..

    hier der quellcode:

    #include <unistd.h>
    #include <iostream.h>
    #include <ApplicationServices/ApplicationServices.h>
    #include <OpenGL/OpenGL.h>
    #include <OpenGL/gl.h>
    #include <OpenGL/glu.h>

    int main (int argc, char * const argv[]) {

    CGDisplayCapture(kCGDirectMainDisplay);

    CGOpenGLDisplayMask displayMask =
    CGDisplayIDToOpenGLDisplayMask( kCGDirectMainDisplay ) ;

    CGLPixelFormatAttribute attribs[] =
    {
    kCGLPFAFullScreen,
    kCGLPFADisplayMask,
    (CGLPixelFormatAttribute)displayMask,
    (CGLPixelFormatAttribute)NULL
    } ;

    CGLPixelFormatObj pixelFormatObj ;
    long numPixelFormats ;

    CGLError error = CGLChoosePixelFormat( attribs, &pixelFormatObj, &numPixelFormats );
    std::cout << "choose pixel format: " << CGLErrorString( error ) << std::endl;

    if ( pixelFormatObj == NULL ) std::cout << "format ist null!" << std::endl;

    CGLContextObj contextObj ;
    error = CGLCreateContext( pixelFormatObj, NULL, &contextObj ) ;
    std::cout << "create context: " << CGLErrorString( error ) << std::endl;

    if ( contextObj == NULL ) std::cout << "Kontext ist null!" << std::endl;

    error = CGLSetCurrentContext( contextObj ) ;
    std::cout << "set current context: " << CGLErrorString( error ) << std::endl;
    error = CGLSetFullScreen( contextObj ) ;
    std::cout << "set fullscreen: " << CGLErrorString( error ) << std::endl;

    glClearColor( 0, 0, 1, 0 ) ;

    glBegin( GL_POINT );
    glPointSize( 10.0 );
    glClearColor( 1.0, 0.0, 0.0, 1.0 );
    //glClear( GL_COLOR_BUFFER_BIT );
    //glColor3f( 0.0, 1.0, 0.0 );
    glVertex2i( 100, 100 );
    glVertex2i( 100, 150 );
    glEnd();

    sleep( 3 );

    CGLSetCurrentContext( NULL ) ;
    CGLClearDrawable( contextObj ) ;
    CGLDestroyContext( contextObj );

    CGLDestroyPixelFormat( pixelFormatObj ) ;

    CGReleaseAllDisplays();

    return 0;
    }

    hat wer eine ahnung woran das liegt?

    lg, f
     
  2. ks23

    ks23 MacUser Mitglied

    Mitglied seit:
    15.04.2004
    Beiträge:
    1.935
    Zustimmungen:
    2
  3. Kusanagi

    Kusanagi MacUser Mitglied

    Mitglied seit:
    22.02.2004
    Beiträge:
    63
    Zustimmungen:
    0
    Tja also in deinem Prog bekommt OpenGL einfach den Befehl zum Zeichen nicht.
    Probier mal ein glFlush() nach glEnd()
     
  4. thurin

    thurin Thread Starter MacUser Mitglied

    Mitglied seit:
    24.03.2004
    Beiträge:
    77
    Zustimmungen:
    0
    &nbsp;

    das problem hat sich schon längst gelöst.. komischerweise setzt glVertex2i die punkte nicht in devicekoordinaten, sondern auch in den normalisierten viewportkoordinaten (-1 - 1) mit glVertex2f im bereich -1 - 1 hats dann tadellos funktioniert..

    glFlush is nicht zwingend notwendig..
     
Die Seite wird geladen...

Diese Seite empfehlen