AGL unter Carbon

  1. Einfachkrank

    Einfachkrank Thread Starter MacUser Mitglied

    Mitglied seit:
    12.06.2005
    Beiträge:
    27
    Zustimmungen:
    0
    Moin,

    ich hab ein Beispiel zu AGL unter Carbon gefunden und ausprobiert, welches prinzipiell funktioniert, nur das Anwendungsfenster ist irgendwie passiv geschaltet. Man kann es nicht verschieben, ist nie im Vordergrund und reagiert auf keine Tastatureingabe...
    Hier mein Code:
    Code:
    int main(void)
    {
    	SetRect(&bounds, 10, 50, width, height);
    	
    	win = NewWindow(NULL, &bounds, "\pMyAGLWindow", true, documentProc, NULL, true, 0);
    	
    	ShowWindow(win);
    	
    	GLint attrib[] = {AGL_DEPTH_SIZE, 16, AGL_RGBA, AGL_DOUBLEBUFFER, AGL_NONE };
    	
    	fmt = aglChoosePixelFormat(NULL, 0, attrib);
    	
    	if(!fmt) return 0;
    	
    	ctx = aglCreateContext(fmt, NULL);
    	
    	if(!ctx) return 0;
    	
    	if(!aglSetDrawable(ctx, (AGLDrawable)GetWindowPort(win))) return 0;
    	
    	if(!aglSetCurrentContext(ctx)) return 0;
    	
    	aglDestroyPixelFormat(fmt);
    	
    	aglEnable(ctx, AGL_SWAP_INTERVAL);
    	
    	long interval = 1;
    	
    	aglSetInteger(ctx, AGL_SWAP_INTERVAL, &interval);
    	
    	InitGL();
    	
    	
    	while(!isDone)
    	{
    		if(WaitNextEvent(everyEvent, &event, 0, NULL))
    		{
    			switch(event.what)
    			{
    			case updateEvt:
    				BeginUpdate((WindowPtr)event.message);
    				EndUpdate((WindowPtr)event.message);
    				break;
    				
    			case keyDown:
    			case autoKey:
    				switch(event.message & charCodeMask)
    				{
    				case 'q':
    					if(event.modifiers & cmdKey)
    						isDone = true;
    					break;
    					
    				default: break;
    				} break;
    				
    			case mouseDown:
    				break;
    				
    			case mouseUp:
    				break;
    			
    			default: break;
    			}
    		}	
    		
    		Render();
    	}
    	
    	
    	aglSetCurrentContext(ctx);	
    	aglSetDrawable(ctx, NULL);
    	aglDestroyContext(ctx);
    	
    	DisposeWindow(win);
    
    	return 0;
    }
    
    Habt ihr Tipps für mich dazu?

    Dann hab ich noch eine weiter Frage: Gibt es ein spezielles Input System, mit dem arbeiten kann? Unter Windows habe ich immer mit DirectInput von DirectX für meine Minispiele gearbeitet...

    MfG Einfachkrank
     
    Einfachkrank, 23.08.2005
    #1
  2. Theome

    Theome MacUser Mitglied

    Mitglied seit:
    03.09.2004
    Beiträge:
    55
    Zustimmungen:
    3
    Zur weiteren Frage:

    Sieh dir mal GLUT an. Das bietet dir ein sehr einfach zu handhabendes OpenGL-Fenster und schöne Funktionen zur Abfrage von Maus- und Tastatureingaben. Eignet sich prima um OpenGL zu lernen, zu vertiefen oder kleine Tools und Spiele zu schreiben.

    Mit Google lassen sich recht schnell Beispiele finden, ich empfehle dir, auch auf der ADC-seite oder im lokalen Developer-Verzeichnis nachzusehen, sowie auf nehe.gamedev.net (links die opengl-tutorials)
     
    Theome, 24.08.2005
    #2
  3. Einfachkrank

    Einfachkrank Thread Starter MacUser Mitglied

    Mitglied seit:
    12.06.2005
    Beiträge:
    27
    Zustimmungen:
    0
    Ja, GLUT kenn ich schon... OpenGL hab ich schon drauf ;-)

    Hab vorher unter Windows mit VC++ DirectX, OpenGL, SDL, FMOD, GLUT, OpenAL programmiert und hab schon ein zwei kleine Spielchen geschrieben. Geht jetzt nur drum, auf Mac umzusteigen...

    Suche halt direkten Ersatz für DirectInput und möchte meine Anwendungen auch schön übersichtlich halten - in Windows hab ich es gehasst mit MFC zu arbeiten und hab auch immer alles "per Hand" initialisiert...

    Und wie gesagt, das passive Fenster muss lebendig werden ;-) ...
     
    Einfachkrank, 24.08.2005
    #3
  4. oneOeight

    oneOeight MacUser Mitglied

    Mitglied seit:
    23.11.2004
    Beiträge:
    48.160
    Zustimmungen:
    3.885
    dazu musst du wohl in deinem event loop das entsprechende handling rein proggen...

    oder mach halt mit dem fenster einen dialog, damit das OS das handling übernimmt...
     
    oneOeight, 24.08.2005
    #4
  5. Theome

    Theome MacUser Mitglied

    Mitglied seit:
    03.09.2004
    Beiträge:
    55
    Zustimmungen:
    3
    Wenn du gerade auf den Mac umsteigst, warum nimmst du dann nicht ein Cocoa-Fenster, packst ein NSOpenGLView rein und lässt Cocoa auch das ganze Event Handling übernehmen?

    Konkret erstellst du eine Subclass von NSOpenGLView und überschreibst darin die Methoden
    -(void)keyDown:(NSEvent *)theEvent
    -(void)mouseDown:(NSEvent *)theEvent
    -(void)mouseMoved:(NSEvent *)theEvent
    usw. Ist ziemlich leicht und du musst nicht selbst event-loops schreiben.
     
    Theome, 24.08.2005
    #5
  6. pdr2002

    pdr2002 MacUser Mitglied

    Mitglied seit:
    28.01.2004
    Beiträge:
    6.849
    Zustimmungen:
    241
    Vielleicht, weil er erst offensichtlich ziemlich fit ist in C++ und überhaupt ersteinmal ins Mac-Programmieren reinkommen will? :rolleyes:
     
    pdr2002, 25.08.2005
    #6
  7. pdr2002

    pdr2002 MacUser Mitglied

    Mitglied seit:
    28.01.2004
    Beiträge:
    6.849
    Zustimmungen:
    241
    Vielleicht kann Dir sonst auch hier weitergeholfen werden. :cool:
     
    pdr2002, 25.08.2005
    #7
  8. Theome

    Theome MacUser Mitglied

    Mitglied seit:
    03.09.2004
    Beiträge:
    55
    Zustimmungen:
    3
    Warum verdrehst denn da gleich die Augen... es ist doch wirklich nicht schwer sich in die Syntax von Objective-C reinzulesen wenn man C++ beherrscht?
     
    Theome, 26.08.2005
    #8
  9. oneOeight

    oneOeight MacUser Mitglied

    Mitglied seit:
    23.11.2004
    Beiträge:
    48.160
    Zustimmungen:
    3.885
    also ich finde es ist gerade schwer, wenn man vorher C/C++ gemacht hat ;)
     
    oneOeight, 26.08.2005
    #9
  10. Einfachkrank

    Einfachkrank Thread Starter MacUser Mitglied

    Mitglied seit:
    12.06.2005
    Beiträge:
    27
    Zustimmungen:
    0
    Ja, das ist eigentlich genau der Grund, warum mir Carbon sympathischer war als Cocoa... hab kein Plan von Objective-C
    Und in mein C++ bin ich noch schwer verliebt und sehe grad keinen Grund, warum ich diese Beziehung aufgeben sollte :)

    @oneOeight
    Wie läuft das genau mit dem Handling?
     
    Einfachkrank, 26.08.2005
    #10
Die Seite wird geladen...
Ähnliche Themen - AGL Carbon
  1. faxe2110
    Antworten:
    2
    Aufrufe:
    354
    faxe2110
    14.05.2016
  2. Bantak
    Antworten:
    1
    Aufrufe:
    545
    Bantak
    18.02.2009
  3. Zoerre
    Antworten:
    3
    Aufrufe:
    1.242
    _ebm_
    13.02.2009
  4. Tatcher a Hainu
    Antworten:
    9
    Aufrufe:
    1.006