❶ OpenGL如何实现B样条曲线和曲面的绘制(c语言)
你说的是计算机图形学的课程设计吧,我有C编写的代码,可以运行,是画B样条曲线和曲面的,我发到你邮箱里了,你参考一下吧。
❷ 求一个C语言Opengl代码
// Bounce.c
// Demonstrates a simple animated rectangle program with GLUT
// OpenGL SuperBible, 2nd Edition
// Richard S. Wright Jr.
#include"stdafx.h"
#include <windows.h>
#include <gl/glut.h>
// Initial square position and size
GLfloat x1 = 100.0f;
GLfloat y1 = 150.0f;
GLsizei rsize = 50;
// Step size in x and y directions
// (number of pixels to move each time)
GLfloat xstep = 1.0f;
GLfloat ystep = 1.0f;
// Keep track of windows changing width and height
GLfloat windowWidth;
GLfloat windowHeight;
// Called to draw scene
void RenderScene(void)
{
// Clear the window with current clearing color
glClear(GL_COLOR_BUFFER_BIT);
// Set current drawing color to red
// R G B
glColor3f(1.0f, 0.0f, 0.0f);
// Draw a filled rectangle with current color
glRectf(x1, y1, x1+rsize, y1+rsize);
// Flush drawing commands
glutSwapBuffers();
}
// Called by GLUT library when idle (window not being
// resized or moved)
void TimerFunction(int value)
{
// Reverse direction when you reach left or right edge
if(x1 > windowWidth-rsize || x1 < 0)
xstep = -xstep;
// Reverse direction when you reach top or bottom edge
if(y1 > windowHeight-rsize || y1 < 0)
ystep = -ystep;
// Check bounds. This is incase the window is made
// smaller and the rectangle is outside the new
// clipping volume
if(x1 > windowWidth-rsize)
x1 = windowWidth-rsize-1;
if(y1 > windowHeight-rsize)
y1 = windowHeight-rsize-1;
// Actually move the square
x1 += xstep;
y1 += ystep;
// Redraw the scene with new coordinates
glutPostRedisplay();
glutTimerFunc(33,TimerFunction, 1);
}
// Setup the rendering state
void SetupRC(void)
{
// Set clear color to blue
glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
}
// Called by GLUT library when the window has chanaged size
void ChangeSize(GLsizei w, GLsizei h)
{
// Prevent a divide by zero
if(h == 0)
h = 1;
// Set Viewport to window dimensions
glViewport(0, 0, w, h);
// Reset coordinate system
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
// Keep the square square, this time, save calculated
// width and height for later use
if (w <= h)
{
windowHeight = 250.0f*h/w;
windowWidth = 250.0f;
}
else
{
windowWidth = 250.0f*w/h;
windowHeight = 250.0f;
}
// Set the clipping volume
glOrtho(0.0f, windowWidth, 0.0f, windowHeight, 1.0f, -1.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
// Main program entry point
void main(void)
{
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutCreateWindow("Bounce");
glutDisplayFunc(RenderScene);
glutReshapeFunc(ChangeSize);
glutTimerFunc(33, TimerFunction, 1);
SetupRC();
glutMainLoop();
}
//是正方形的,你改一下吧~
程序还是自己试着编,这样才会进步,加油哈!
❸ C语言opengl如何画出这样的图形
如果只用C里的函数是不行的 必须通过其它的图形程序接口(例如OpenGL,DirectX等)可以办到
❹ C语言windows,OpenGL编程
查找 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程序怎么写
你的代码中因为没有进行适当放缩,导致正方体无法正常显示。可以使用:glScalef(0.5,0.5,0.5);后观察效果。另外,代码之中存在两处错误:第一,绕序问题,推测你使用逆时针正面绕序。这样的话,则需要改正ABCD面为:ColoredVertex(ColorR, PointB);ColoredVertex(ColorG, PointA);ColoredVertex(ColorB, PointD);ColoredVertex(ColorB, PointC);第二:#define ColoredVertex(c,v)do{glColor3fv(c);glVertex3fv(v);}while(0);这个宏中既然定义了颜色参数,就把它用上。最后效果为:
❻ 用Opengl(c语言)编程
当年我也做过这个程序,只是代码不在了。
❼ 用openGL和C语言做一个3D旋转魔方大致的步骤是什么
另外,虚机团上产品团购,超级便宜
❽ opengl 用在C语言中时 程序里面使用的哪种基本数据类型
openGL自己有自己定义的类型和c语言的基础类型对应。
当然openGL没有规定必须要用他自己定义的类型。所以你完全可以用c语言里面的基本类型。
反正用来用去都是一样。
就是你如果用C的类型可能到不同的编译器或系统所占的内存有所不一样可能同样的程序在不同的编译器或系统中效果不一样。
而openGL库自己的类型则可以稍微避过这一点,达到一个“跨平台适配”的效果。
❾ OpenGL for c++ 视频教程哪里有啊 本人很急
到OpenGL 官方站去找吧。
http://www.opengl.org/code/
有许多程序例子,参考材料,不知道有没有视频。
❿ 求一套opengl教学视频,求大神共享,刚学完c语言,想学习opengl,求视频资料。
1、我用的是Visual Studio2005和Visual C++6.0,配置如下
安装GLUT工具包
GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装。
Windows环境下的GLUT下载地址:
(1)、将下载的压缩包解开,将得到5个文件
(2)、在“我的电脑”中搜索“gl.h”,并找到其所在文件夹
如果是VC++6,则应该将glut.h复制在“D:\Program Files\MicrosoftVisualStudio\VC98 \Include\GL文件夹”)。 如果是VisualStudio2008,把glut.h复制到x:\Program Files\Microsoft\Visual Studio 9.0\VC\include\GL文件夹中,如果没有GL这个文件夹则可以自己新建一个。(x是你安装VS的盘符号,如果装的是VC++的话,里面有个gl文件,Visual Studio 2008则需要自己去新建一个)
(3)、把解压得到的glut.lib和glut32.lib放到静态函数库所在文件夹(即与include并排的lib文件夹下)。
(4)、把解压得到的glut.dll和glut32.dll放到操作系统目录下面的system32文件夹内。(典型的位置为:C:\Windows\System32)
2、一楼回答的很形象,OpenGL是一种图形编程库,也就是说很多应用软件都是基于它之上做成的,同样3Dmax也是,不过不同的是3Dmax还使用了另一种图形编程方法,即DirectX,微软开发的,现在还在不断完善中,给OpenGL的竞争压力很大。我认为,3Dmax主要用来建造复杂游戏模型用的,毕竟用OpenGL中一条条编程语言绘制出来一个复杂的模型有可能,譬如一个人物模型,但是需要做的工作恐怕就不是个人能接受的了,所以只能说它们各有侧重点
3、OpenGL programming guide(OpenGL红宝书),OpenGL Reference Manual(OpenGL API大全,被称为OpenGL蓝宝书),
4、网络文库里有很多资料,可以自己挑选着从易到难地逐步学习,我也收集了一些,如果你需要,留个邮箱我发给你