请各位高手推荐一本OpenGL编程的入门书籍,最好是中文版的电子书籍(急用),多谢 MSDN中有详细的教程和例子,自己边研究边学习,不亦乐乎 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你是要画圆锥吧?参考下面的代码。HWND hWnd; // 窗口句柄HDC hDC; // GDI设备句柄HGLRC hGLRC; // OpenGL绘图设备句柄int PixelFormat; // 像素格式PIXELFORMATDESCRIPTOR pfd= // 像素格式描述表 { ... }; hDC=GetDC(hWnd); // 取得窗口的GDI设备句柄if((PixelFormat=ChoosePixelFormat(hDC, &pfd))==0) ...; /* 选择与pfd最为匹配的一种像素格式,如果失败返回0 */if((SetPixelFormat(hDC, PixelFormat, &pfd))==0) ...; // 设置像素格式,如果失败返回0hGLRC=wglCreateContext(hDC); // 获取OpenGL设备句柄wglMakeCurrent(hDC, hGLRC); // 设置当前OpenGL设备 ... // 程序主体wglDeleteContext(hGLRC); // 释放OpenGL设备句柄ReleaseDC(hWnd,hDC); // 释放GDI设备句柄另外再查查关于glu的一些写常用函数,应该就差不多了:创建一个二次曲面对象:GLUquadricObj * gluNewQuadric(void);设定二次曲面对象的绘图风格:void gluQuadricDrawStyle(GLUquadricObj *quadObj, GLenum drawStyle);设定二次曲面对象的法线类型:void gluQuadricNormals(GLUquadricObj *quadObj, GLenum normals);设定二次曲面对象的朝向:void gluQuadricOrientation(GLUquadricObj *quadObj, GLenum orientation);定义二次取面对象是否需要纹理坐标:void gluQuadricTexture(GLUquadricObj *quadObj,GLboolean textureCoords);绘制一个圆球:void gluSphere(GLUquadricObj *qobj, GLdouble radius, GLint slices, GLint stacks);绘制一个圆盘:void gluDisk(GLUquadricObj *qobj, GLdouble innerRadius, GLdouble outerRadius, GLint slices, GLint loops);绘制一个扇形圆盘:void gluPartialDisk(GLUquadricObj *qobj, GLdouble innerRadius, GLdouble outerRadius, GLint slices, GLint loops, GLdouble startAngle, GLdouble sweepAngle);绘制一个圆台(锥、柱):void gluCylinder(GLUquadricObj *qobj, GLdouble baseRadius, GLdouble topRadius, GLdouble height, GLint slices, GLint stacks);删除一个二次曲面对象:void gluDeleteQuadric(GLUquadricObj *qobj); azuo_lee()老兄,你用的是OpenGL的函数吗? 请看这个帖子http://www.csdn.net/expert/topic/159/159694.shtm VC+Flash开发有人做过? CTime为何格式化出现访问冲突 请问这句声明tlb的代码是什么意思?多谢 哪里能找到"Microsoft excel 8.0 object library" CoInitializeEx() 有熟悉LSP的吗,有问题求解,急。 [Help]TCP服务端Select查询问题... mfc多文档中怎么改变子窗口的位置 背单词程序计划 谁知道怎么做WORD样式的菜单用mfc (谢谢) 用VC画一个立体图形(三棱柱),顶点坐标为三维,请教实现方法,多谢! 想送分都不行?
HWND hWnd; // 窗口句柄
HDC hDC; // GDI设备句柄
HGLRC hGLRC; // OpenGL绘图设备句柄
int PixelFormat; // 像素格式
PIXELFORMATDESCRIPTOR pfd= // 像素格式描述表
{
...
};
hDC=GetDC(hWnd); // 取得窗口的GDI设备句柄
if((PixelFormat=ChoosePixelFormat(hDC, &pfd))==0) ...; /* 选择与pfd最为匹配的一种像素格式,如果失败返回0 */
if((SetPixelFormat(hDC, PixelFormat, &pfd))==0) ...; // 设置像素格式,如果失败返回0
hGLRC=wglCreateContext(hDC); // 获取OpenGL设备句柄
wglMakeCurrent(hDC, hGLRC); // 设置当前OpenGL设备
... // 程序主体
wglDeleteContext(hGLRC); // 释放OpenGL设备句柄
ReleaseDC(hWnd,hDC); // 释放GDI设备句柄
另外再查查关于glu的一些写常用函数,应该就差不多了:
创建一个二次曲面对象:
GLUquadricObj * gluNewQuadric(void);设定二次曲面对象的绘图风格:
void gluQuadricDrawStyle(GLUquadricObj *quadObj, GLenum drawStyle);设定二次曲面对象的法线类型:
void gluQuadricNormals(GLUquadricObj *quadObj, GLenum normals);设定二次曲面对象的朝向:
void gluQuadricOrientation(GLUquadricObj *quadObj, GLenum orientation);定义二次取面对象是否需要纹理坐标:
void gluQuadricTexture(GLUquadricObj *quadObj,GLboolean textureCoords);绘制一个圆球:
void gluSphere(GLUquadricObj *qobj, GLdouble radius, GLint slices, GLint stacks);绘制一个圆盘:
void gluDisk(GLUquadricObj *qobj, GLdouble innerRadius, GLdouble outerRadius, GLint slices, GLint loops);绘制一个扇形圆盘:
void gluPartialDisk(GLUquadricObj *qobj, GLdouble innerRadius, GLdouble outerRadius, GLint slices, GLint loops, GLdouble startAngle, GLdouble sweepAngle);绘制一个圆台(锥、柱):
void gluCylinder(GLUquadricObj *qobj, GLdouble baseRadius, GLdouble topRadius, GLdouble height, GLint slices, GLint stacks);删除一个二次曲面对象:
void gluDeleteQuadric(GLUquadricObj *qobj);
老兄,你用的是OpenGL的函数吗?