Jump to content
  • Advertisement
Sign in to follow this  
bobsaget

OpenGL Real basic Q with dx9?

This topic is 3554 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I have used opengl and c++ for a bit of time and liked its ease of a learning curve. The thing is I plan on using windows and a lot of the pluses of Opengl did not seem to apply. I wanted to check out dx9(running vista, but use xp more). When i looked at some source I was really surprised to see its shear length. I used opengl and wxwdiget for a lot of things, but win32 api was something I rarely touched. I noticed a lot of the decelerations in win32, seemed to not need to be touched after they were initially used, am I right in this assumption? How did you find the learning curve, compared to other graphical api's? I am willing to learn. Also why does there seem to be a large abundance of opengl books recently and not as many dx 10/9? Why are a lot of tutorials written for dx8? Would you recommend I look at dx 10 style of doing things? Besides the sdk's documentation, is there anywhere else you looked for help? (I saw directxtutorial.com, and chad vernon). Thanks a lot. Anthony

Share this post


Link to post
Share on other sites
Advertisement
I see, so do you think starting with the bulk of guides on dx9 is a good idea? Where do you get most of your help when you get stuck?

Share this post


Link to post
Share on other sites
Well, the first thing that really helps is the msdn. It's really helpful to have it locally installed or open in a browser.
If this does not help, there's also the directx documentation that ships with the SDK: extremely helpful.
IF this does not help, consult gamedev.net (but only if the other 2 resources don't help). If you're doing it in that way, the members will be grateful :)

Share this post


Link to post
Share on other sites
I recently started learnin Directx basics.There is very little of win32 you need to know.Plus it stays the same in most of the apps.For eg creating a window,processing messages(only few lines),etc.
I would like to know the diff between Directx and Opengl.

Share this post


Link to post
Share on other sites
Quote:
Original post by bobsaget
Thanks, you said I did not need to know that much win32. How much do you know, and do you think it is sufficient?


Well, the only thing you need to know is how to create a window and how to start the message pump. Alot of (really alot) tutorials explain the code you need in order to do this.

You can break it down to this:

#define WINDOW_CLASS_NAME "Kernel Window"

LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
PAINTSTRUCT ps;
HDC hdc;

switch(msg)
{
case WM_CREATE:
{
return(0);
}
break;

case WM_PAINT:
{
hdc = BeginPaint(hwnd,&ps;
EndPaint(hwnd,&ps);
return(0);
}
break;

case WM_DESTROY:
{
PostQuitMessage(0);
return(0);
}
break;

default:
break;

}
return (DefWindowProc(hwnd, msg, wparam, param));
}

int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow)
{
int screenwidth = 1024;
int screenheight = 768;

WNDCLASSEX winclass;
HWND hwnd;
MSG msg;

winclass.cbSize = sizeof(WNDCLASSEX);
winclass.style = CS_HREDRAW | CS_VREDRAW;
winclass.lpfnWndProc = WindowProc;
winclass.cbClsExtra = 0;
winclass.cbWndExtra = 0;
winclass.hInstance = hinstance;
winclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
winclass.hCursor = LoadCursor(NULL, IDC_ARROW);
winclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
winclass.lpszMenuName = NULL;
winclass.lpszClassName = WINDOW_CLASS_NAME;
winclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

if (!RegisterClassEx(&winclass))
return(0);

if( !(hwnd = CreateWindowEx( NULL,
WINDOW_CLASS_NAME,
WINDOW_NAME,
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
0,0,
Screenwidth,
Screenheight,
NULL,
NULL,
hinstance,
NULL ) ) )
return 0;

// You will place your initialization here
InitDirectX();

while(TRUE)
{
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
if (msg.message == WM_QUIT)
break;

TranslateMessage(&msg);
DispatchMessage(&msg);
}
// This is the main function in your application
// It is responsible for updating your scene and drawing it
if( !MainRoutine() )
break;
}

// This is the place where you will place your destruction
DestroyDirectX();

return 0;
}





That is pretty much everything. Please not that this is sloppy, one can do better. I think you can find the "perfect" main loop in the FAQ section of the forum. After you're done with this, you can move on with your application.

Share this post


Link to post
Share on other sites
thanks for the speedy replies. So far it looks long but pretty straight forwards, I picked up win32 programming from my library and so far it looks like the former I just typed.

Why does the dx10 tutorials seem more complete then the dx9? Or is it just me. Also does anyone have trouble running http://www.win32developer.com/ it seems to have nothing to click.

[Edited by - bobsaget on October 25, 2008 4:32:12 PM]

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!