NSOpenGLView probleme

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • NSOpenGLView probleme

    Hi

    irgendwie hab ich ein Problem einen NSOpenGLView zu erstellen...

    witzigerweise gehen alle meine alten Projekte problemlos nur wen ich ein neues Projekt erstelle funktioniert es nicht.
    das Problem ist das er simpel nichts rendert

    im View sind nur Grafikreste und Speichermüll zu sehen...

    ich hab auch schon allen OpenGL code aus dem view auf ein einfaches glClearColor und glClear zusammengestrichen aber keine änderung...

    es werden auch keine Fehler ausgeworfen weder in cocoa noch von OpenGL

    ist ein frisches Projekt ohne irgendwelche experimente...

    achja configuriert hab ich den NSOpenGLView "wie immer" im IB...?

    irgendjemand nen tipp?
    snafu
    :() { :|: &};:
    sometimes i dream in hex
    Obey gravity! Because its a law!
  • Quellcode

    1. - (void)drawRect:(NSRect)dirtyRect {
    2. glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
    3. GLenum err = glGetError();
    4. if (GL_NO_ERROR != err) NSLog(@"clear GL-ERROR: %s",((char *) gluErrorString (err)));
    5. glMatrixMode(GL_PROJECTION);
    6. glLoadIdentity();
    7. gluPerspective( 45.0 , _bounds.size.width / _bounds.size.height, 0.1f, 100.0f );
    8. gluLookAt(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
    9. glMatrixMode(GL_MODELVIEW);
    10. glLoadIdentity();
    11. /*
    12. glTranslatef(0.0,0.0,0.0);
    13. glBegin(GL_LINES);
    14. glColor3f(1.0,0.0,0.0); // x achsis red
    15. glVertex3f(0.0,0.0,0.0);
    16. glVertex3f(10.0,0.0,0.0);
    17. glColor3f(0.0,1.0,0.0); // y achsis green
    18. glVertex3f(0.0,0.0,0.0);
    19. glVertex3f(0.0,10.0,0.0);
    20. glColor3f(0.0,0.0,1.0); // z achsis blue
    21. glVertex3f(0.0,0.0,0.0);
    22. glVertex3f(0.0,0.0,10.0);
    23. glEnd();
    24. */
    25. glFlush();
    26. err = glGetError();
    27. if (GL_NO_ERROR != err) NSLog(@"GL-ERROR: %s",((char *) gluErrorString (err)));
    28. }
    29. - (void)prepareOpenGL
    30. {
    31. glShadeModel( GL_SMOOTH ); // Enable smooth shading
    32. glClearColor( 0.4f, 0.4f, 0.4f, 0.2f ); // Black background
    33. glClearDepth( 1.0f ); // Depth buffer setup
    34. glEnable( GL_DEPTH_TEST ); // Enable depth testing
    35. glDepthFunc( GL_LEQUAL ); // Type of depth test to do
    36. // Really nice perspective calculations
    37. glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST );
    38. glEnable( GL_BLEND );
    39. glBlendFunc( GL_SRC_ALPHA , GL_ONE_MINUS_SRC_ALPHA );
    40. glEnable( GL_LINE_SMOOTH );
    41. GLenum err = glGetError();
    42. if (GL_NO_ERROR != err) NSLog(@"GL-ERROR: %s",((char *) gluErrorString (err)));
    43. }
    44. - (void)reshape
    45. {
    46. glViewport( 0, 0, _bounds.size.width, _bounds.size.height );
    47. glMatrixMode( GL_PROJECTION ); // Select the projection matrix
    48. glLoadIdentity(); // and reset it
    49. // Calculate the aspect ratio of the view
    50. gluPerspective( 45.0, _bounds.size.width / _bounds.size.height, 0.1f, 100.0f );
    51. GLenum err = glGetError();
    52. if (GL_NO_ERROR != err) NSLog(@"shape GL-ERROR: %s",((char *) gluErrorString (err)));
    53. }
    Alles anzeigen


    ich hab schon faktisch jeden teil auskommentiert und einkommentiert... keine Ahnung was nicht geht
    snafu
    :() { :|: &};:
    sometimes i dream in hex
    Obey gravity! Because its a law!
  • drawRect und reshape sind nicht optimal:

    Das funktioniert 100%

    Quellcode

    1. - (void) prepareOpenGL
    2. {
    3. glClearColor( 0.0f, 0.0f, 0.0f, 1.0f );
    4. }
    5. - (void)reshape
    6. {
    7. NSRect rect = [self bounds];
    8. glViewport( 0, 0, (GLsizei)rect.size.width, (GLsizei)rect.size.height);
    9. glMatrixMode( GL_PROJECTION );
    10. glLoadIdentity();
    11. gluPerspective( 45.0, rect.size.width / rect.size.height, 1.0, 5.0 );
    12. glMatrixMode( GL_MODELVIEW );
    13. glLoadIdentity();
    14. }
    15. -(void) drawRect: (NSRect) bounds
    16. {
    17. glClear(GL_COLOR_BUFFER_BIT );
    18. glColor3f(1.0f, 0.85f, 0.35f);
    19. glBegin(GL_TRIANGLES);
    20. {
    21. glVertex3f( -0.2, -0.3, -2.0);
    22. glVertex3f( 0.2, -0.3, -2.0);
    23. glVertex3f( 0.0, 0.3, -2.0);
    24. }
    25. glEnd();
    26. glFlush();
    27. }
    Alles anzeigen
  • hm danke!

    aber... ich bekomm ihn ja nicht mal dazu einfach nur den View zu löschen... es sind einfach nur die Grafikfragmente darin wie in dem angehängten screenshot oben...

    ich vermute momentan das es einfach an den display attributen liegt die man IB setzt...

    bin mal weiter am rumprobieren...

    ... es wär ja noch verständlich wenn ich das nicht schon ein paar mal hinbekommen hätte... *grumel*
    snafu
    :() { :|: &};:
    sometimes i dream in hex
    Obey gravity! Because its a law!
  • Kontext nicht aktiv? Offensichtlich kommt das glClear nicht an. Ich weiss nicht mehr, wie das bei NSOpenGLVIew war; ist der nicht per default double-buffered und Du brauchst irgendwie einen Swap?
    Oder Du machst irgendwas fieses, wie glColorMask(0,0,0,0) oder so, aber das glaube ich weniger :)
    C++
  • so - ich habs nun hinbekommen...

    wie es schien hat sich meine Vermutung bestätigt das es am IB lag bzw den Einstellungen.

    Ich hab letztlich das XIB neu angelegt und die Optionen für den View noch mal frisch eingestellt und plötzlich funktionierte es...

    nach ein wenig nachträglichem testen scheint es, dass man im IB nicht an den double Buffer oder stereo Buffer Optionen spielen sollte weil er wohl dann irgendwie durcheinander kommt...

    allerdings kann ich mich auch nicht erinnern diese vorher aktiviert zu haben - ich erinner mich das in meiner OpenGLfibel auch steht, dass man bei Cocoafenstern nicht extra double buffern sollte weil diese schon gepuffert sind - darum ist das bei mir normal immer im IB aus...

    naja es funktioniert nun wieder alles wie es soll .. hat ja nur nen wochenende gekostet *murr*

    danke euch allen...
    snafu
    :() { :|: &};:
    sometimes i dream in hex
    Obey gravity! Because its a law!