当前位置:首页 » 编程软件 » opengl编程

opengl编程

发布时间: 2022-01-14 01:09:18

‘壹’ C语言windows,OpenGL编程

  1. 查找 MSDN 可以得知,MSG 里面的 pt 坐标是相对于窗口的左上角的;

2. 至于声音控制和播放,可以使用 Windows 自带的 MCI API,或者使用 DirectSound 来播放,我推荐你使用 un4seen 的 BASS,简单实用强大,一两个函数就可以播放音效了;

3. 你要使用 alpha blend 与桌面进行镂空运算,就必须首先获得桌面的窗体句柄,OpenGL 的 alppha 运算我不是很懂,不过 Direct3D 的话就简单多了;

4. 屏幕常亮,其实就是阻止系统进入休眠状态,每当系统要进入休眠状态之前,都会向系统的所有窗口发送一条消息,你拦截这条消息,进行特别的处理就可以防止系统进入休眠了,至于是什么消息,请查看 MSDN,我也好久没用过这条消息了;

5.bmp 文件可以保存 alpha 通道,使用 32bit 色深的 bmp 文件就可以了,RGB 分别 8bit,alpha 通道 8bit,不过说到 alpha 通道,tga 或者 png 图片更加合适,因为他们可以进行无损压缩

6.用GetPocAddress导出函数,只能用类型强制转换,这个是 windows 的原则,我们只能去迎合它了 ...

7. 执行 NULL 指针的话,不同的系统会有不同的反应,XP 是直接程序崩溃,Vista 或者以上的系统,就会提示无响应

8. 如果你建立的工程是 Win32 窗口程序,那么就不会有 DOS 窗口,如果你建立的是 Win32 控制台程序,那么就会有 DOS 窗口;如果你使用 OpenGL 实用库来创建 OpenGL 程序,那个 DOS 窗口是无法消除的,它可以帮助你进行错误排查

9. 不要用 Dev C++ 了,用 VS2010 吧,这是行业规范


最后,祝楼主学习愉快

‘贰’ OPENGL编程问题

//旋转直线

#include <gl/glut.h>
GLfloat spin = 0.0;
GLdouble pt[3][3]={0};
int st=0;
void init()
{
glClearColor(0.0, 0.0, 0.0, 0.0);
glShadeModel(GL_FLAT);
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glColor3f(1.0, 1.0, 1.0);
glPointSize(5);
switch(st){
case 3:
glTranslated(pt[2][0],pt[2][1],pt[2][2]);
glRotatef(spin,0,0,1);
glTranslated(-pt[2][0],-pt[2][1],-pt[2][2]);
//点3
glBegin(GL_POINTS);
glVertex3dv(pt[2]);
glEnd();
case 2:
//线
glBegin(GL_LINES);
glVertex3dv(pt[0]);
glVertex3dv(pt[1]);
glEnd();
//点2
glBegin(GL_POINTS);
glVertex3dv(pt[1]);
glEnd();
case 1:
//点1
glBegin(GL_POINTS);
glVertex3dv(pt[0]);
glEnd();
break;
}
glPopMatrix();
glutSwapBuffers();
}
void spinDisplay(void)
{
spin = spin + 1.0;
if (spin > 360.0)
spin -= 360.0;
glutPostRedisplay();
}
void reshape(int w, int h)
{
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-50.0, 50.0, -50.0, 50.0, -1.0, 1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void toWorldCoords(int x, int y, GLdouble w[3])
{
GLint viewport[4];
GLdouble mv[16],proj[16];
GLint realy;
glGetIntegerv(GL_VIEWPORT, viewport);
glGetDoublev(GL_MODELVIEW_MATRIX, mv);
glGetDoublev(GL_PROJECTION_MATRIX, proj);
realy = viewport[3] - (GLint) y - 1;
gluUnProject(x,realy,0,mv,proj,viewport, w,w+1,w+2);
}
void mouse(int button, int state, int x, int y)
{
switch (button) {
case GLUT_LEFT_BUTTON:
if (state == GLUT_DOWN)
{
switch(st)
{
case 2:
glutIdleFunc(spinDisplay);
case 1:
case 0:
toWorldCoords(x,y,pt[st++]);
glutPostRedisplay();
break;
}
}
break;
}
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize(500, 500);
glutInitWindowPosition(100, 100);
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMouseFunc(mouse);
glutMainLoop();
return 0;
}

‘叁’ OpenGL编程问题

#include<iostream>下面加一行using namespace std;
前缀 数据类型 相应C语言类型 OpenGL类型
b 8-bit integer signed char GLbyte
s 16-bit integer short GLshort
i 32-bit integer long GLint,GLsizei
f 32-bit floating-point float GLfloat,GLclampf
d 64-bit floating-point double GLdouble,GLclampd
ub 8-bit unsigned integer unsigned char GLubyte,GLboolean
us 16-bit unsigned integer unsigned short GLushort
ui 32-bit unsigned integer unsigned long GLuint,GLenum,GLbitfield

‘肆’ opengl编程指南适合初学者吗

其实我觉得NeHe的OpenGL指南应该是比较容易理解和入门的~
如果例程运行有问题,最好找一下问题根源所在~
我记得我当初学openGL的时候(做虚拟现实相关的破烂玩意儿~),只有一点点的WINDOWS编程基础(自学的《windows程序设计》这本书),用的也是nehe的教程,感觉用来入门还算不错的~
不过后来的工作,再也没有用过openGL。。。都淡忘了 =。=

‘伍’ OpenGL编程

1.将开发库中的.h文件拷贝到Visual C++2008的\Include\GL目录中
2.将.lib文件拷贝到Visual C++2008的\lib目录中
3.将.dll文件拷贝到操作系统的system32目录中

先看一下里面有没有对应的 glaux.h glaux.lib 没有的话网上下一个,或者给我邮箱我发给你也行

‘陆’ 如何在windows上用C/C++进行OpenGL编程

windows可以opengl编程。上网站下载glut压缩包后,解压,把glut32.dll放在Windows的system32目录下,将glut32.lib放在C:\program files\Microsoft Visual Studio\VC98\Lib目录中,将glut.h放在C:\programfiles\Microsoft Visual Studio\VC98\Include\GL目录中。
VC工程项目的设置
为了使用OpenGL,我们需要在项目中加入相关的Lib文件:glut32.lib。方法如下:选中菜单
Project->Settings项,在link选项卡中的Object/Library moles栏中加入glut32.lib。
选择菜单File中的New选项,弹出一个分页的对话框,选中页Files中的C++ sourcefile,填入
文件名,钩选添加到刚才建的那个工程里,然后就可以开始编程了。
新建一个项目的方法如下:选择菜单File中的New选项,弹出一个分页的对话框,选中页
Projects中的Win32 Console Application项,然后填入你自己的Project name,回车即可。VC为
你创建一个工作区(WorkSpace),你的项目就放在这个工作区里。 然后,为项目添加文件即可。

‘柒’ opengl编程高手请进!

OpenGL1.5用户指南英文版
下载地址
http://www.caenet.cn/data/Data.aspx?ID=344

‘捌’ 求<<opengl编程指南>>中文的pdf

很清晰,中文版本。可以先看看再采纳。 望采纳 本来是直接给你附件的。现在网络好像不能添加附件了。给我网址吧

‘玖’ 为什么《OpenGL编程指南》(原书第8版)中第一个OpenGL程序triangles.cpp我原封不动的敲上去还报错

你看的这种书,附带了很多自己的源代码库.你的程序要链接上这种库才能用啊.
看来你还没怎么用过vc, 这种链接lib 什么的是基本功.
要先熟悉后才能再研究更深的东西.
你身边有高手的话让他给你演示一下.

‘拾’ OpenGL编程使矩形旋转

已知对角线的两点的坐标,那么就知道四个点的坐标了呀,(25,25) (25,75) (75,75) (75,25),你可以这么写代码

glPushMatrix();
glRotatef……//旋转矩阵
glScalef……//缩放矩阵
glBegin……
glVertex2f();
glVertex2f();
glVertex2f();
glVertex2f();
glEnd();

1、glScale —— 将新的缩放矩阵乘以当前矩阵

有三个参数,为缩放因子

2、glRotate------旋转矩阵

有四个参数,第一个是角度,其他的分别代表x,y,z轴,表示绕着哪个轴进行旋转

热点内容
循迹小车算法 发布:2024-12-22 22:28:41 浏览:82
scss一次编译一直生成随机数 发布:2024-12-22 22:04:24 浏览:956
嫁接睫毛加密 发布:2024-12-22 21:50:12 浏览:975
linuxbin文件的安装 发布:2024-12-22 21:46:07 浏览:798
vlcforandroid下载 发布:2024-12-22 21:45:26 浏览:664
电脑做网关把数据发送至服务器 发布:2024-12-22 21:44:50 浏览:432
新华三代理什么牌子的服务器 发布:2024-12-22 21:33:21 浏览:342
欢太会员密码是什么 发布:2024-12-22 20:57:28 浏览:74
sqllocaldb 发布:2024-12-22 20:07:08 浏览:126
如何找到我的服务器 发布:2024-12-22 19:52:14 浏览:301