und nocheinmal opengl

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

  1. thurin

    thurin Thread Starter MacUser Mitglied

    Beiträge:
    77
    Zustimmungen:
    0
    MacUser seit:
    24.03.2004
    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

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

    Kusanagi MacUser Mitglied

    Beiträge:
    63
    Zustimmungen:
    0
    MacUser seit:
    22.02.2004
    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

    Beiträge:
    77
    Zustimmungen:
    0
    MacUser seit:
    24.03.2004
    &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