博文

OpenGL基本框架(2006-08-04 16:09:00)

摘要: 在北大上了4节游戏动画设计的课,老师真的是很牛,也很BT,他上课只讲算法,基本上不涉及代码,竟然要我们在第8节课之前交上去一个不少于1500行代码的OpenGL/Direct3D程序,作为大作业。 众所周知,DirectX比较难,不适于初学图形学的人,而且有平台的限制。OpenGL相对简单一点,而且功能强大,是高端的工业标准。我为了能够把更多的经历放在算法上面,而不是MS“诡异”的操作上面,选择了OpenGL. 去书店搜了搜书,D3D的书倒是琳琅满目,但是OpenGL的书却不多,基本上就是那一本“红宝书”。不过翻看红宝书一看,都是console下的列子,毕竟我不想只用GL函数,windows api也是很好的东西,况且用mfc也可以让我偷点懒。 于是放弃了红宝书,决定自己上网找资料进行实践。呵呵,现在看来这个决定还是蛮正确的。 对于windows下的编程,似乎无论是win32 app还是dll,或者mfc,最重要的,也是最难的,都是那个框架。OpenGL也是如此。好在我已经饱经mfc的洗礼,明白如何下手分析框架。不过发现网上的很多程序框架都不是完全一样,不知道这里有没有什么标准?有些代码段去掉之后也仍然没有问题的。这似乎印证了csdn上的一句话:OpenGL出了错,什么都不会做; DirectX出了错,什么都做的出来。^-^ 研究了很多例子之后,我自己总结出了一个最简单、易懂的通用框架,并且给出了重要部分的注释:   /******************************by CRACKER007*******************************/     BOOL CGdlg::InitialPixelFormat()    //此函数被后面的CreateRC调用
{
 static PIXELFORMATDESCRIPTOR pfd=
 {
  sizeof(PIXELFORMATDESCRIPTOR),
   1,
   PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFF......

阅读全文(4231) | 评论:6

vc之pragma宏的简单应用(2006-08-04 16:08:00)

摘要:整理了一下msdn中关于pragma的一些用法,在此列出我认为是比较有用的一些pragma指令,并加上我的一些说明:   1 The following pragma causes the linker to search for the EMAPI.LIB library while linking. The linker searches first in the current working directory and then in the path specified in the LIB environment variable: #pragma comment( lib, "emapi" )
-----------------------------------------------------------------------
2 When the compiler encounters a deprecated symbol, it issues C4995: void func1(void) {}
void func2(void) {}
int main() {
   func1();
   func2();
   #pragma deprecated(func1, func2)
   func1();   // C4995
   func2();   // C4995
}
----------------------------------------------------------------------
3 The following code fragment uses the message pragma to display a message during compilation: #if _M_IX86 == 500
#pragma message( "Pentium processor build" )
#endif
----------------------------......

阅读全文(4394) | 评论:1