But be honest, do you think anyone is ever going to look at that source code? It's quite useless.
![](http://www.gamedev.net/community/forums/ubb/wink.gif)
thanks and happy new century!
BTW, I like D3D
--TheGoop
however, I do have the latest opengl32.dll but when I use it, it doesnt work, do I need the library too? where can I get it?
[This message has been edited by Azrael (edited December 31, 1999).]
BTW...what happened to my old name on this board?
I heard that the new geforche GPU will automatic do the transformation and lighting calculations in openGL if you use the standart statements for it
I mis indeed some functions in openGL: ".X" object loading and the new texture format.
But I like the intuitive and simple interface of openGl.
Btw: geforce or TNT2 are great for openGl. My viper 770 TNT2 accelerate automatic in the above example.
To give an example of how easy it is to create a opengl 3d application will I post here the code for drawing a textured mipmaped polygon application with full 3d acceleration support:
#include
#include
#include
#include
static HGLRC hRC;
static HDC hDC;
BOOL keys[256];
GLuint texture[2];
float r=6;
GLvoid LoadGLTextures()
{
AUX_RGBImageRec *texture1;
texture1 = auxDIBImageLoad("kolpo.bmp");
glGenTextures(2, &texture[0]);
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
gluBuild2DMipmaps(GL_TEXTURE_2D,3, texture1->sizeX, texture1->sizeY, GL_RGB, GL_UNSIGNED_BYTE, texture1->data);
}
GLvoid InitGL(GLsizei Width, GLsizei Height)
{
LoadGLTextures();
glEnable(GL_TEXTURE_2D);
glClearColor(0.0f,0.0f,0.0f,0.0f);
glClearDepth(1.0);
glDepthFunc(GL_LESS);
glEnable(GL_DEPTH_TEST);
glShadeModel(GL_SMOOTH);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f,(GLfloat)Width/(GLfloat)Height,0.1f,100.0f);
glMatrixMode(GL_MODELVIEW);
}
GLvoid ReSizeGLScene(GLsizei Width, GLsizei Height)
{
if (Height==0)Height=1;
glViewport(0,0,Width, Height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f,(GLfloat)Width/(GLfloat)Height,0.1f,100.0f);
glMatrixMode(GL_MODELVIEW);
}
GLvoid DrawGLScene(GLvoid)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0,0,-6);
glBindTexture(GL_TEXTURE_2D, texture[0]);
glBegin(GL_QUADS);
glTexCoord2d(0,0); glVertex3f(-1,1,0);
glTexCoord2d(0,1); glVertex3f(-1,-1,0);
glTexCoord2d(1,1); glVertex3f(1,-1,0);
glTexCoord2d(1,0); glVertex3f(1,1,0);
glEnd();
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
RECT Screen;
GLuint PixelFormat;
static PIXELFORMATDESCRIPTOR pfd=
{
sizeof(PIXELFORMATDESCRIPTOR),
1,
PFD_DRAW_TO_WINDOW |
PFD_SUPPORT_OPENGL |
PFD_DOUBLEBUFFER,
PFD_TYPE_RGBA,
16,
0, 0, 0, 0, 0, 0,
0,
0,
0,
0,0,0,0,
16,
0,
0,
PFD_MAIN_PLANE,
0,
0,0,0
};
switch (message)
{
case WM_CREATE:
hDC = GetDC(hWnd);
PixelFormat = ChoosePixelFormat(hDC, &pfd);
if (!PixelFormat)
{
MessageBox(0, "Can't Find A Suitable PixelFormat", "Error", MB_OK | MB_ICONERROR);
PostQuitMessage(0);
break;
}
if (!SetPixelFormat(hDC, PixelFormat, &pfd))
{
MessageBox(0, "Can't Set The PixelFormat", "Error", MB_OK | MB_ICONERROR);
PostQuitMessage(0);
break;
}
hRC = wglCreateContext(hDC);
if (!hRC)
{
MessageBox(0, "Can't Create A GL Rendering Contex", "Error", MB_OK | MB_ICONERROR);
PostQuitMessage(0);
break;
}
if (!wglMakeCurrent(hDC, hRC))
{
MessageBox(0, "Can't activate GLRC", "Error", MB_OK | MB_ICONERROR);
PostQuitMessage(0);
break;
}
GetClientRect(hWnd, &Screen);
InitGL(Screen.right, Screen.bottom);
break;
case WM_KEYDOWN:
keys[wParam]=TRUE;
break;
case WM_KEYUP:
keys[wParam]=FALSE;
break;
case WM_DESTROY:
case WM_CLOSE:
ChangeDisplaySettings(NULL, 0);
wglMakeCurrent(hDC, NULL);
wglDeleteContext(hRC);
ReleaseDC(hWnd, hDC);
PostQuitMessage(0);
break;
case WM_SIZE:
ReSizeGLScene(LOWORD(lParam),HIWORD(lParam));
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return (0);
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
WNDCLASS wc;
HWND hWnd;
wc.style=CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
wc.lpfnWndProc=(WNDPROC)WndProc;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hInstance=hInstance;
wc.hIcon=NULL;
wc.hCursor=LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground=NULL;
wc.lpszMenuName="NULL";
wc.lpszClassName="OpenGL WinClass";
if (!RegisterClass(&wc))
{
MessageBox(0, "Failed to Register The Window Class", "Error", MB_OK | MB_ICONERROR);
return FALSE;
}
hWnd=CreateWindow("OpenGL WinClass", "Kolpo goes 3D",
WS_POPUP | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
0,0,640,480, NULL, NULL, hInstance, NULL);
if (!hWnd)
{
MessageBox(0, "Window Creation Error", "Error", MB_OK | MB_ICONERROR);
return FALSE;
}
DEVMODE dmScreenSettings;
dmScreenSettings.dmSize=sizeof(DEVMODE);;
dmScreenSettings.dmPelsWidth=640;
dmScreenSettings.dmPelsHeight=480;
dmScreenSettings.dmFields=DM_PELSWIDTH | DM_PELSHEIGHT;
ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN);
ShowWindow(hWnd, SW_SHOW);
UpdateWindow(hWnd);
SetFocus(hWnd);
wglMakeCurrent(hDC, hRC);
while (1)
{
while (PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
{
if (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
return TRUE;
}
}
DrawGLScene();
SwapBuffers(hDC);
if (keys[VK_ESCAPE]) SendMessage(hWnd, WM_CLOSE,0 , 0);
}
}
Yes this is everthing
-Where is the 3d acceleration code ?
Is already implement in opengl
To let this code work:
-open visual c++
-create a new win32 application
-add opengl32.lib, glu32.lib and glaux.lib
on the lib list
-create a cpp file and copy this code in it
-be sur that all the needed opengl dll's are in your windows folder
-run