AGL unter Carbon

Einfachkrank

Mitglied
Thread Starter
Dabei seit
12.06.2005
Beiträge
27
Reaktionspunkte
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
 
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)
 
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 ;-) ...
 
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...
 
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 schrieb:
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?
Vielleicht, weil er erst offensichtlich ziemlich fit ist in C++ und überhaupt ersteinmal ins Mac-Programmieren reinkommen will? :rolleyes:
 
Vielleicht kann Dir sonst auch hier weitergeholfen werden. :cool:
 
pdr2002 schrieb:
Vielleicht, weil er erst offensichtlich ziemlich fit ist in C++ und überhaupt ersteinmal ins Mac-Programmieren reinkommen will? :rolleyes:

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 schrieb:
es ist doch wirklich nicht schwer sich in die Syntax von Objective-C reinzulesen wenn man C++ beherrscht?

also ich finde es ist gerade schwer, wenn man vorher C/C++ gemacht hat ;)
 
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?
 
Zuletzt bearbeitet:
Zurück
Oben Unten