Zum Inhalt springen

Malarkey

Member
  • Gesamte Inhalte

    2661
  • Benutzer seit

  • Letzter Besuch

Beiträge erstellt von Malarkey

  1. Nimm doch C++! Das ist mMn übersichtlicher, logischer aufgebaut und eigentlich kennt jeder den Standart-Satz: "Was kann Java, was C++ nicht kann?" Ich bin zwar weißgott KEIN Meister, nicht mal wirklich Fortgeschrittener, aber an sich finde ich C++ einfacher. Hatte Java in der Schule, was zwar auch ein wenig ähnlich war, aber halt nicht ganz.

    So, und nochmal meine Frage: Soll ich eher OpenGL oder DirectX lernen? DirectX ist halt moderner... Meine Angst ist nur, dass das ein wenig Overkill ist, oder ich spätestens bei OpenGL 12 wieder Alles neu lernen muss. Oder in wie weit ändert sich die API in einer Version?! Grundlegend oder nur teilweise?! Weiß einfach nicht was ich lernen soll. Wollte endlich raus aus der Konsole und in die Spieleprogrammierung...

    Hülfe!

  2. :-D

    So, Leute. Wie kann ich denn jetzt am besten und kostengünstigsten in die OpenGL-Programmierung einsteigen? Onlinetutorials schön und gut, aber mehr als die Theorie anhand eines Beispiels wird da auch nicht erläutert, dh man kann das gelernte nicht weiterverwenden.

    Habt ihr irgendwo GUTE, AUSFÜHRLICHE und etwas weiterführende Tutorials? Würde OpenGL nämlich gern etwas professioneller lernen. Ich weiß zwar nicht, inwieweit man das als GameProgrammer braucht.... Aber vermutlich so um die 100%, ca.. :D

    €: Wir können ja im ersten Post so eine Zusammenfassung machen mit guten Links, Büchern etc.

    €: @Dayjay: Was willst du den programmieren? Plattformunabhängig ist OpenGL, was halt für grafische Anwendungen die Lösung seien könnte. Sonst einfach C++. wxWidgets kenn ich (noch) nicht.

  3. Fehlermeldung:

    1>------ Erstellen gestartet: Projekt: openglll, Konfiguration: Debug Win32 ------
    
    1>  stdafx.cpp
    
    1>  openglll.cpp
    
    1>openglll.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_gluPerspective@32" in Funktion ""void __cdecl ReSizeGLScene(int,int)" (?ReSizeGLScene@@YAXHH@Z)".
    
    1>openglll.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__glLoadIdentity@0" in Funktion ""void __cdecl ReSizeGLScene(int,int)" (?ReSizeGLScene@@YAXHH@Z)".
    
    1>openglll.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__glMatrixMode@4" in Funktion ""void __cdecl ReSizeGLScene(int,int)" (?ReSizeGLScene@@YAXHH@Z)".
    
    1>openglll.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__glViewport@16" in Funktion ""void __cdecl ReSizeGLScene(int,int)" (?ReSizeGLScene@@YAXHH@Z)".
    
    1>openglll.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__glHint@8" in Funktion ""int __cdecl InitGL(void)" (?InitGL@@YAHXZ)".
    
    1>openglll.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__glDepthFunc@4" in Funktion ""int __cdecl InitGL(void)" (?InitGL@@YAHXZ)".
    
    1>openglll.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__glEnable@4" in Funktion ""int __cdecl InitGL(void)" (?InitGL@@YAHXZ)".
    
    1>openglll.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__glClearDepth@8" in Funktion ""int __cdecl InitGL(void)" (?InitGL@@YAHXZ)".
    
    1>openglll.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__glClearColor@16" in Funktion ""int __cdecl InitGL(void)" (?InitGL@@YAHXZ)".
    
    1>openglll.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__glShadeModel@4" in Funktion ""int __cdecl InitGL(void)" (?InitGL@@YAHXZ)".
    
    1>openglll.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__glClear@4" in Funktion ""int __cdecl DrawGLScene(void)" (?DrawGLScene@@YAHXZ)".
    
    1>openglll.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__wglDeleteContext@4" in Funktion ""void __cdecl KillGLWindow(void)" (?KillGLWindow@@YAXXZ)".
    
    1>openglll.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__wglMakeCurrent@8" in Funktion ""void __cdecl KillGLWindow(void)" (?KillGLWindow@@YAXXZ)".
    
    1>openglll.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__wglCreateContext@4" in Funktion ""int __cdecl CreateGLWindow(char *,int,int,int,bool)" (?CreateGLWindow@@YAHPADHHH_N@Z)".
    
    1>e:\user-verwaltung\admin\documents\visual studio 2010\Projects\openglll\Debug\openglll.exe : fatal error LNK1120: 14 nicht aufgelöste externe Verweise.
    
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
    programmcode:
    /*
    
     *		This Code Was Created By Jeff Molofee 2000
    
     *		A HUGE Thanks To Fredric Echols For Cleaning Up
    
     *		And Optimizing This Code, Making It More Flexible!
    
     *		If You've Found This Code Useful, Please Let Me Know.
    
     *		Visit My Site At nehe.gamedev.net
    
     */
    
    #include "stdafx.h"
    
    #include <windows.h>		// Header File For Windows
    
    #include <gl\gl.h>			// Header File For The OpenGL32 Library
    
    #include <gl\glu.h>			// Header File For The GLu32 Library
    
    #include <glaux.h>		// Header File For The Glaux Library
    
    
    
    HDC			hDC=NULL;		// Private GDI Device Context
    
    HGLRC		hRC=NULL;		// Permanent Rendering Context
    
    HWND		hWnd=NULL;		// Holds Our Window Handle
    
    HINSTANCE	hInstance;		// Holds The Instance Of The Application
    
    
    
    bool	keys[256];			// Array Used For The Keyboard Routine
    
    bool	active=TRUE;		// Window Active Flag Set To TRUE By Default
    
    bool	fullscreen=TRUE;	// Fullscreen Flag Set To Fullscreen Mode By Default
    
    
    
    LRESULT	CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);	// Declaration For WndProc
    
    
    
    GLvoid ReSizeGLScene(GLsizei width, GLsizei height)		// Resize And Initialize The GL Window
    
    {
    
    	if (height==0)										// Prevent A Divide By Zero By
    
    	{
    
    		height=1;										// Making Height Equal One
    
    	}
    
    
    
    	glViewport(0,0,width,height);						// Reset The Current Viewport
    
    
    
    	glMatrixMode(GL_PROJECTION);						// Select The Projection Matrix
    
    	glLoadIdentity();									// Reset The Projection Matrix
    
    
    
    	// Calculate The Aspect Ratio Of The Window
    
    	gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);
    
    
    
    	glMatrixMode(GL_MODELVIEW);							// Select The Modelview Matrix
    
    	glLoadIdentity();									// Reset The Modelview Matrix
    
    }
    
    
    
    int InitGL(GLvoid)										// All Setup For OpenGL Goes Here
    
    {
    
    	glShadeModel(GL_SMOOTH);							// Enable Smooth Shading
    
    	glClearColor(0.0f, 0.0f, 0.0f, 0.5f);				// Black Background
    
    	glClearDepth(1.0f);									// Depth Buffer Setup
    
    	glEnable(GL_DEPTH_TEST);							// Enables Depth Testing
    
    	glDepthFunc(GL_LEQUAL);								// The Type Of Depth Testing To Do
    
    	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);	// Really Nice Perspective Calculations
    
    	return TRUE;										// Initialization Went OK
    
    }
    
    
    
    int DrawGLScene(GLvoid)									// Here's Where We Do All The Drawing
    
    {
    
    	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);	// Clear Screen And Depth Buffer
    
    	glLoadIdentity();									// Reset The Current Modelview Matrix
    
    	return TRUE;										// Everything Went OK
    
    }
    
    
    
    GLvoid KillGLWindow(GLvoid)								// Properly Kill The Window
    
    {
    
    	if (fullscreen)										// Are We In Fullscreen Mode?
    
    	{
    
    		ChangeDisplaySettings(NULL,0);					// If So Switch Back To The Desktop
    
    		ShowCursor(TRUE);								// Show Mouse Pointer
    
    	}
    
    
    
    	if (hRC)											// Do We Have A Rendering Context?
    
    	{
    
    		if (!wglMakeCurrent(NULL,NULL))					// Are We Able To Release The DC And RC Contexts?
    
    		{
    
    			MessageBox(NULL,"Release Of DC And RC Failed.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION);
    
    		}
    
    
    
    		if (!wglDeleteContext(hRC))						// Are We Able To Delete The RC?
    
    		{
    
    			MessageBox(NULL,"Release Rendering Context Failed.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION);
    
    		}
    
    		hRC=NULL;										// Set RC To NULL
    
    	}
    
    
    
    	if (hDC && !ReleaseDC(hWnd,hDC))					// Are We Able To Release The DC
    
    	{
    
    		MessageBox(NULL,"Release Device Context Failed.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION);
    
    		hDC=NULL;										// Set DC To NULL
    
    	}
    
    
    
    	if (hWnd && !DestroyWindow(hWnd))					// Are We Able To Destroy The Window?
    
    	{
    
    		MessageBox(NULL,"Could Not Release hWnd.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION);
    
    		hWnd=NULL;										// Set hWnd To NULL
    
    	}
    
    
    
    	if (!UnregisterClass("OpenGL",hInstance))			// Are We Able To Unregister Class
    
    	{
    
    		MessageBox(NULL,"Could Not Unregister Class.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION);
    
    		hInstance=NULL;									// Set hInstance To NULL
    
    	}
    
    }
    
    
    
    /*	This Code Creates Our OpenGL Window.  Parameters Are:					*
    
     *	title			- Title To Appear At The Top Of The Window				*
    
     *	width			- Width Of The GL Window Or Fullscreen Mode				*
    
     *	height			- Height Of The GL Window Or Fullscreen Mode			*
    
     *	bits			- Number Of Bits To Use For Color (8/16/24/32)			*
    
     *	fullscreenflag	- Use Fullscreen Mode (TRUE) Or Windowed Mode (FALSE)	*/
    
     
    
    BOOL CreateGLWindow(char* title, int width, int height, int bits, bool fullscreenflag)
    
    {
    
    	GLuint		PixelFormat;			// Holds The Results After Searching For A Match
    
    	WNDCLASS	wc;						// Windows Class Structure
    
    	DWORD		dwExStyle;				// Window Extended Style
    
    	DWORD		dwStyle;				// Window Style
    
    	RECT		WindowRect;				// Grabs Rectangle Upper Left / Lower Right Values
    
    	WindowRect.left=(long)0;			// Set Left Value To 0
    
    	WindowRect.right=(long)width;		// Set Right Value To Requested Width
    
    	WindowRect.top=(long)0;				// Set Top Value To 0
    
    	WindowRect.bottom=(long)height;		// Set Bottom Value To Requested Height
    
    
    
    	fullscreen=fullscreenflag;			// Set The Global Fullscreen Flag
    
    
    
    	hInstance			= GetModuleHandle(NULL);				// Grab An Instance For Our Window
    
    	wc.style			= CS_HREDRAW | CS_VREDRAW | CS_OWNDC;	// Redraw On Size, And Own DC For Window.
    
    	wc.lpfnWndProc		= (WNDPROC) WndProc;					// WndProc Handles Messages
    
    	wc.cbClsExtra		= 0;									// No Extra Window Data
    
    	wc.cbWndExtra		= 0;									// No Extra Window Data
    
    	wc.hInstance		= hInstance;							// Set The Instance
    
    	wc.hIcon			= LoadIcon(NULL, IDI_WINLOGO);			// Load The Default Icon
    
    	wc.hCursor			= LoadCursor(NULL, IDC_ARROW);			// Load The Arrow Pointer
    
    	wc.hbrBackground	= NULL;									// No Background Required For GL
    
    	wc.lpszMenuName		= NULL;									// We Don't Want A Menu
    
    	wc.lpszClassName	= "OpenGL";								// Set The Class Name
    
    
    
    	if (!RegisterClass(&wc))									// Attempt To Register The Window Class
    
    	{
    
    		MessageBox(NULL,"Failed To Register The Window Class.","ERROR",MB_OK|MB_ICONEXCLAMATION);
    
    		return FALSE;											// Return FALSE
    
    	}
    
    	
    
    	if (fullscreen)												// Attempt Fullscreen Mode?
    
    	{
    
    		DEVMODE dmScreenSettings;								// Device Mode
    
    		memset(&dmScreenSettings,0,sizeof(dmScreenSettings));	// Makes Sure Memory's Cleared
    
    		dmScreenSettings.dmSize=sizeof(dmScreenSettings);		// Size Of The Devmode Structure
    
    		dmScreenSettings.dmPelsWidth	= width;				// Selected Screen Width
    
    		dmScreenSettings.dmPelsHeight	= height;				// Selected Screen Height
    
    		dmScreenSettings.dmBitsPerPel	= bits;					// Selected Bits Per Pixel
    
    		dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;
    
    
    
    		// Try To Set Selected Mode And Get Results.  NOTE: CDS_FULLSCREEN Gets Rid Of Start Bar.
    
    		if (ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN)!=DISP_CHANGE_SUCCESSFUL)
    
    		{
    
    			// If The Mode Fails, Offer Two Options.  Quit Or Use Windowed Mode.
    
    			if (MessageBox(NULL,"The Requested Fullscreen Mode Is Not Supported By\nYour Video Card. Use Windowed Mode Instead?","NeHe GL",MB_YESNO|MB_ICONEXCLAMATION)==IDYES)
    
    			{
    
    				fullscreen=FALSE;		// Windowed Mode Selected.  Fullscreen = FALSE
    
    			}
    
    			else
    
    			{
    
    				// Pop Up A Message Box Letting User Know The Program Is Closing.
    
    				MessageBox(NULL,"Program Will Now Close.","ERROR",MB_OK|MB_ICONSTOP);
    
    				return FALSE;									// Return FALSE
    
    			}
    
    		}
    
    	}
    
    
    
    	if (fullscreen)												// Are We Still In Fullscreen Mode?
    
    	{
    
    		dwExStyle=WS_EX_APPWINDOW;								// Window Extended Style
    
    		dwStyle=WS_POPUP;										// Windows Style
    
    		ShowCursor(FALSE);										// Hide Mouse Pointer
    
    	}
    
    	else
    
    	{
    
    		dwExStyle=WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;			// Window Extended Style
    
    		dwStyle=WS_OVERLAPPEDWINDOW;							// Windows Style
    
    	}
    
    
    
    	AdjustWindowRectEx(&WindowRect, dwStyle, FALSE, dwExStyle);		// Adjust Window To True Requested Size
    
    
    
    	// Create The Window
    
    	if (!(hWnd=CreateWindowEx(	dwExStyle,							// Extended Style For The Window
    
    								"OpenGL",							// Class Name
    
    								title,								// Window Title
    
    								dwStyle |							// Defined Window Style
    
    								WS_CLIPSIBLINGS |					// Required Window Style
    
    								WS_CLIPCHILDREN,					// Required Window Style
    
    								0, 0,								// Window Position
    
    								WindowRect.right-WindowRect.left,	// Calculate Window Width
    
    								WindowRect.bottom-WindowRect.top,	// Calculate Window Height
    
    								NULL,								// No Parent Window
    
    								NULL,								// No Menu
    
    								hInstance,							// Instance
    
    								NULL)))								// Dont Pass Anything To WM_CREATE
    
    	{
    
    		KillGLWindow();								// Reset The Display
    
    		MessageBox(NULL,"Window Creation Error.","ERROR",MB_OK|MB_ICONEXCLAMATION);
    
    		return FALSE;								// Return FALSE
    
    	}
    
    
    
    	static	PIXELFORMATDESCRIPTOR pfd=				// pfd Tells Windows How We Want Things To Be
    
    	{
    
    		sizeof(PIXELFORMATDESCRIPTOR),				// Size Of This Pixel Format Descriptor
    
    		1,											// Version Number
    
    		PFD_DRAW_TO_WINDOW |						// Format Must Support Window
    
    		PFD_SUPPORT_OPENGL |						// Format Must Support OpenGL
    
    		PFD_DOUBLEBUFFER,							// Must Support Double Buffering
    
    		PFD_TYPE_RGBA,								// Request An RGBA Format
    
    		bits,										// Select Our Color Depth
    
    		0, 0, 0, 0, 0, 0,							// Color Bits Ignored
    
    		0,											// No Alpha Buffer
    
    		0,											// Shift Bit Ignored
    
    		0,											// No Accumulation Buffer
    
    		0, 0, 0, 0,									// Accumulation Bits Ignored
    
    		16,											// 16Bit Z-Buffer (Depth Buffer)  
    
    		0,											// No Stencil Buffer
    
    		0,											// No Auxiliary Buffer
    
    		PFD_MAIN_PLANE,								// Main Drawing Layer
    
    		0,											// Reserved
    
    		0, 0, 0										// Layer Masks Ignored
    
    	};
    
    	
    
    	if (!(hDC=GetDC(hWnd)))							// Did We Get A Device Context?
    
    	{
    
    		KillGLWindow();								// Reset The Display
    
    		MessageBox(NULL,"Can't Create A GL Device Context.","ERROR",MB_OK|MB_ICONEXCLAMATION);
    
    		return FALSE;								// Return FALSE
    
    	}
    
    
    
    	if (!(PixelFormat=ChoosePixelFormat(hDC,&pfd)))	// Did Windows Find A Matching Pixel Format?
    
    	{
    
    		KillGLWindow();								// Reset The Display
    
    		MessageBox(NULL,"Can't Find A Suitable PixelFormat.","ERROR",MB_OK|MB_ICONEXCLAMATION);
    
    		return FALSE;								// Return FALSE
    
    	}
    
    
    
    	if(!SetPixelFormat(hDC,PixelFormat,&pfd))		// Are We Able To Set The Pixel Format?
    
    	{
    
    		KillGLWindow();								// Reset The Display
    
    		MessageBox(NULL,"Can't Set The PixelFormat.","ERROR",MB_OK|MB_ICONEXCLAMATION);
    
    		return FALSE;								// Return FALSE
    
    	}
    
    
    
    	if (!(hRC=wglCreateContext(hDC)))				// Are We Able To Get A Rendering Context?
    
    	{
    
    		KillGLWindow();								// Reset The Display
    
    		MessageBox(NULL,"Can't Create A GL Rendering Context.","ERROR",MB_OK|MB_ICONEXCLAMATION);
    
    		return FALSE;								// Return FALSE
    
    	}
    
    
    
    	if(!wglMakeCurrent(hDC,hRC))					// Try To Activate The Rendering Context
    
    	{
    
    		KillGLWindow();								// Reset The Display
    
    		MessageBox(NULL,"Can't Activate The GL Rendering Context.","ERROR",MB_OK|MB_ICONEXCLAMATION);
    
    		return FALSE;								// Return FALSE
    
    	}
    
    
    
    	ShowWindow(hWnd,SW_SHOW);						// Show The Window
    
    	SetForegroundWindow(hWnd);						// Slightly Higher Priority
    
    	SetFocus(hWnd);									// Sets Keyboard Focus To The Window
    
    	ReSizeGLScene(width, height);					// Set Up Our Perspective GL Screen
    
    
    
    	if (!InitGL())									// Initialize Our Newly Created GL Window
    
    	{
    
    		KillGLWindow();								// Reset The Display
    
    		MessageBox(NULL,"Initialization Failed.","ERROR",MB_OK|MB_ICONEXCLAMATION);
    
    		return FALSE;								// Return FALSE
    
    	}
    
    
    
    	return TRUE;									// Success
    
    }
    
    
    
    LRESULT CALLBACK WndProc(	HWND	hWnd,			// Handle For This Window
    
    							UINT	uMsg,			// Message For This Window
    
    							WPARAM	wParam,			// Additional Message Information
    
    							LPARAM	lParam)			// Additional Message Information
    
    {
    
    	switch (uMsg)									// Check For Windows Messages
    
    	{
    
    		case WM_ACTIVATE:							// Watch For Window Activate Message
    
    		{
    
    			if (!HIWORD(wParam))					// Check Minimization State
    
    			{
    
    				active=TRUE;						// Program Is Active
    
    			}
    
    			else
    
    			{
    
    				active=FALSE;						// Program Is No Longer Active
    
    			}
    
    
    
    			return 0;								// Return To The Message Loop
    
    		}
    
    
    
    		case WM_SYSCOMMAND:							// Intercept System Commands
    
    		{
    
    			switch (wParam)							// Check System Calls
    
    			{
    
    				case SC_SCREENSAVE:					// Screensaver Trying To Start?
    
    				case SC_MONITORPOWER:				// Monitor Trying To Enter Powersave?
    
    				return 0;							// Prevent From Happening
    
    			}
    
    			break;									// Exit
    
    		}
    
    
    
    		case WM_CLOSE:								// Did We Receive A Close Message?
    
    		{
    
    			PostQuitMessage(0);						// Send A Quit Message
    
    			return 0;								// Jump Back
    
    		}
    
    
    
    		case WM_KEYDOWN:							// Is A Key Being Held Down?
    
    		{
    
    			keys[wParam] = TRUE;					// If So, Mark It As TRUE
    
    			return 0;								// Jump Back
    
    		}
    
    
    
    		case WM_KEYUP:								// Has A Key Been Released?
    
    		{
    
    			keys[wParam] = FALSE;					// If So, Mark It As FALSE
    
    			return 0;								// Jump Back
    
    		}
    
    
    
    		case WM_SIZE:								// Resize The OpenGL Window
    
    		{
    
    			ReSizeGLScene(LOWORD(lParam),HIWORD(lParam));  // LoWord=Width, HiWord=Height
    
    			return 0;								// Jump Back
    
    		}
    
    	}
    
    
    
    	// Pass All Unhandled Messages To DefWindowProc
    
    	return DefWindowProc(hWnd,uMsg,wParam,lParam);
    
    }
    
    
    
    int WINAPI WinMain(	HINSTANCE	hInstance,			// Instance
    
    					HINSTANCE	hPrevInstance,		// Previous Instance
    
    					LPSTR		lpCmdLine,			// Command Line Parameters
    
    					int			nCmdShow)			// Window Show State
    
    {
    
    	MSG		msg;									// Windows Message Structure
    
    	BOOL	done=FALSE;								// Bool Variable To Exit Loop
    
    
    
    	// Ask The User Which Screen Mode They Prefer
    
    	if (MessageBox(NULL,"Would You Like To Run In Fullscreen Mode?", "Start FullScreen?",MB_YESNO|MB_ICONQUESTION)==IDNO)
    
    	{
    
    		fullscreen=FALSE;							// Windowed Mode
    
    	}
    
    
    
    	// Create Our OpenGL Window
    
    	if (!CreateGLWindow("NeHe's OpenGL Framework",640,480,16,fullscreen))
    
    	{
    
    		return 0;									// Quit If Window Was Not Created
    
    	}
    
    
    
    	while(!done)									// Loop That Runs While done=FALSE
    
    	{
    
    		if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))	// Is There A Message Waiting?
    
    		{
    
    			if (msg.message==WM_QUIT)				// Have We Received A Quit Message?
    
    			{
    
    				done=TRUE;							// If So done=TRUE
    
    			}
    
    			else									// If Not, Deal With Window Messages
    
    			{
    
    				TranslateMessage(&msg);				// Translate The Message
    
    				DispatchMessage(&msg);				// Dispatch The Message
    
    			}
    
    		}
    
    		else										// If There Are No Messages
    
    		{
    
    			// Draw The Scene.  Watch For ESC Key And Quit Messages From DrawGLScene()
    
    			if (active)								// Program Active?
    
    			{
    
    				if (keys[VK_ESCAPE])				// Was ESC Pressed?
    
    				{
    
    					done=TRUE;						// ESC Signalled A Quit
    
    				}
    
    				else								// Not Time To Quit, Update Screen
    
    				{
    
    					DrawGLScene();					// Draw The Scene
    
    					SwapBuffers(hDC);				// Swap Buffers (Double Buffering)
    
    				}
    
    			}
    
    
    
    			if (keys[VK_F1])						// Is F1 Being Pressed?
    
    			{
    
    				keys[VK_F1]=FALSE;					// If So Make Key FALSE
    
    				KillGLWindow();						// Kill Our Current Window
    
    				fullscreen=!fullscreen;				// Toggle Fullscreen / Windowed Mode
    
    				// Recreate Our OpenGL Window
    
    				if (!CreateGLWindow("NeHe's OpenGL Framework",640,480,16,fullscreen))
    
    				{
    
    					return 0;						// Quit If Window Was Not Created
    
    				}
    
    			}
    
    		}
    
    	}
    
    
    
    	// Shutdown
    
    	KillGLWindow();									// Kill The Window
    
    	return (msg.wParam);							// Exit The Program
    
    }

    Projekt: Win32 Projekt, Multybite Zeichensatz.

    €: Habs! Hatte eine .lib nicht eingebunden!

  4. Erstmal nur ein Bisschen. Morgen kommt mehr! :)

    „WAS IST HIER LOS“, brüllte Franko. Er schien direkt neben mir zu liegen. Auf einmal wurde es wieder hell und ich sah Tammo mit einem Leuchtstab in der Hand. Er hatte sich an dem Tisch festhalten können. Franko und Hartewick waren auch wohl auf. Doch dann sah ich zu Elias. Sein Schädel war blutüberströmt. Seine Augen waren nicht zu erkennen. Im selben Moment wurde die Tür zur Pilotenkabine aufgestoßen.

    „Ihr müsst springen! JETZT!“

    Es bestand kein Zweifel mehr: Wir waren entdeckt.

    „Elias ist verletzt.“ Sein Schreien nahm kein Unterlass.

    „Dann springt ohne ihn. Entweder ihr springt jetzt oder nie!“

    Und plötzlich spürte ich, wie sich die Wand hinter meinem Rücken löste und mein Körper sich einer reißenden Kraft hingab. Ich sah den Sternenhimmel, wie ein Kreisel um mich wirbelnd. Ich fiel und spürte, wie sich mein Innerstes nach Außen kehrte. Dann schwand mein Bewusstsein.

    Als ich erwachte, fand ich mich zwischen den Halmen einer kleinen Wiese wieder. Ich kotzte meinen Schmerz auf den feuchten Untergrund und fühlte meinen Körper beben, wie ein Hammer, schwingend und zitternd.

    „Gilpins….“, hörte ich in nicht allzu weiter Ferne eine bekannte Stimme keuchen.

    „Ahhhhh…..“, stöhnte Ich, um Luft bangend. Mein Brustkorb musste auf ein Blatt zusammengedrückt worden sein.

    „Was ist dir?“

    Auf diese Frage antwortete ich nicht. Dann plötzlich griff mich Etwas an der Seite und versuchte mich vom Bauch auf den Rücken zu drehen. Aus purem Reflex schrie ich auf und schlug mit meiner rechten Faust zu.

    „Du ******!“ Es war Franko. „Dieses dreckige Miststück. Schlägt mir gegen den Magen, der unfähiger Idiot!“

    „Ist gut Franko. Sehen wir zu, dass wir Gilpins vorsichtig auf die Beine kriegen und uns zum Zielort begeben“, hörte ich nun Hartwicke sagen.

    „Was wollen wir mit diesem Lappen noch anfangen. Mit dem kannst kein kleines Kind mehr erschrecken.“ Wütend trat ich Franko die Beine vom Boden weg und sein schlaksiger Körper fiel plump auf meinen Rücken. Dann holte er aus schlug auf mich ein und drückte mein Gesicht in das Erbrochene. Plötzlich knallte es ohrenbetäubend.

  5. Hey! Habe mir gerade die DXirectX SDK geladen. Wie trichter ich die jetzt meinem Visual Studio 2010 (kostenlose Version) ein? Habe ein Onlinetutorial befolgt, aber wenn ich dieses verfolge, sieht es ab Schritt 4 nicht mehr so aus und ab Schritt 5 fehlen die Einräge komplett! Kann mir das mal jemand erklären wie das funktioniert?

    Danke! :-)

    Und kann mir jemand einen Link zu einem DirectX Tutorial geben? Habe zwar eins von directxtutorial.com, welches aber nur die ersten 5 Kapitel kostenlos ist :-/

  6. Hab mal ne Frage zu logischen Aussagen: Ich verstehe ja eigentlich Alle, bis auf eine. Im Buch ist die Sprechweise "A impliziert B".

    Wenn A und B Aussagen wären, wäre die Logiktabelle:

    A | B | A <--> B

    w | w | w

    w | f | f

    f | w | w

    f | f | w

    wobei f = falsch und w = wahr. Außerdem verstehe ich den Unterschied zwischen Äquivalenz und 'Und' nicht... Bitte um Hilfe!

  7. Wenn du bei den Eierköpfen an ihren Wettersimulationssystemen oder was auch immer sitzt, sieht's anders aus.

    :lol:

    Ok, danke! :-D

    Naja, die normalen Unis haben auch keinen NC. Aber das duale Studium bei Crytek, InnoGames, etc. Also wenn ich jetzt 2 Jahre reinhaue, bekomm ich mein Abi mit 1,6 hin... Zählen eigentlich Alle belegten Fächer in den NC oder zählen nur die Fächer aus dem Abizeugniss dh alle eingebrachten?

  8. Mit 1,6 könnte eher knapp werden... 2,5 ist ja 'einfach'... Mal sehn...

    Wie gehe ich denn am Besten an die Sache heran? Mir liegen jetzt bald die Werke "Einführung in die Informatik", "Mathematik für Informatiker", "Einführung in die Algorythmik", "C++ Die Programmiersprache" vor. Abwechselnd, oder erst mal den Matheteil?! Bin gerade ein wenig mit der Fülle von Informationen überfordert, bzgl wo mit ich anfangen soll^^

  9. Traum wäre natürlich Duales Studium bei Crytek / InnoGames / Daedelic / EA / etc, was natürlich eher unmöglich ist. Zumal ich mir sehr unsicher bin, ob ich mich dann nicht selbst stark überfordere. Am Schnuppertag an der Uni haben die gesagt, dass 50%+ nach den ersten Semestern fliegen, weil sie es nicht packen. Und Dual ist ja nochmal einiges härter.

    Also, real betrachtet liegt die Uni Kassel ganz günstig, da dort die Studiengebühren eher niedrig sind und es eh "um die Ecke" liegt. Wohne nur so 30km entfernt.

    Was meinst du mit Fachrichtung? Sind das die einzelnen Spezialisierungen während des Informatikstudiums? Ehrlich gesagt, weiß ich da gar nicht genau, welche es da Alles gibt, aber ich wollte später in Richtung Spieleprogrammierung gehen. Also mit Schwerpunkt auf Softwareentwicklung bzw Medieninformatik, wobei Kassel nur Informatik mit verschiedenen Schwerpunkten anbietet.

    War heute in Kassel und habe mit dort:

    "Mathematik für Informatiker" geholt. Das knallt ja ordentlich, vorallem das erste Kapitel (Mengen) kommt da kontextbefreit ziemlich trocken rüber. Mit Aussagen (true false) wirds schon 'spannender'.

    ^_^

  10. Hiho... 2013 gehts höchstwahrscheinlich an's Informatikstudium und daher wollte ich mich schon vorher intensiv mit den verschiedenen Gebieten auseinandersetzen...

    Und zu einem dieser Gebiete habe ich gerade eine Frage: Was ist jetzt genau ein Vektor im mathematischen Sinn(€: Jetzt nicht in einer Progg.-Sprache. Da kenne ich Vektoren, erkenne da aber nur eher schwammige Zusammenhänge)? Ich hab schon ein paar Beiträge gelesen, welche aber nie wirklich erklären, welchem Anwendungsfall diese Vektoren zu Grunde liegen. Also, was ich bräucht, wäre soetwas wie:

    Vektoren nutzt man, wenn [???], und zwar in dem man [???] und [???] macht. Wie man damit rechnet hab ich ja verstanden... Das Thema kommt btw jetzt auch in der Schule dran, daher leg ich da auch grad so ein wenig Wert drauf. (Muss meine 14P schaffen...)

  11. der bär scheißt sich grad mächtig ins fell :lol:

    Das nennt ihr lustig?

    :facepalm:

    €: Naja, stimmt ja schon.. Das GIF sieht ja ganz niedlich aus. Kenne halt nur das ganze Video. Und das ist nicht lustig. :(

×
×
  • Neu erstellen...

Wichtige Information

Wir haben Cookies auf Deinem Gerät platziert. Das hilft uns diese Webseite zu verbessern. Du kannst die Cookie-Einstellungen anpassen, andernfalls gehen wir davon aus, dass Du damit einverstanden bist, weiterzumachen.