当前位置:首页 > 代码 > 正文

c语言opengl茶壶代码(opengl茶壶纹理映射)

admin 发布:2022-12-19 19:34 180


本篇文章给大家谈谈c语言opengl茶壶代码,以及opengl茶壶纹理映射对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

求Bezier曲面的Utah茶壶代码!(OpenGL C++)最简单的就行

这个基本是红宝书中的例子,控制点的数据我是网上下载的,好像有问题,你用你自己的控制点就行了。。。文件有点长,看附件吧

void

display(void)

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();

    glRotatef(-80.0, 1.0, 1.0, 0.0);

for( int i = 0; i  32; ++i )

{

glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4,

        0, 1, 12, 4, ctrlpoints[4*i][0][0]);

glEvalMesh2(GL_FILL, 0, 20, 0, 20);

}

    

    glPopMatrix();

    glFlush();

}

C语言如何用OpenGL

OpenGL就是基于C语言的,只需要下载OpenGL的SDK库安装即可,在编写源码时:

1、添加头文件glut.h。

注意glut.h文件中已经包含gl.h,glu.h在实际编译中可以只加入头文件glut.h,很多相关的例子都是这样的,但是在mingwstudio上编译发现,在glut.h前还是需要加入glu.h, gl.h.如:

#include gl/gl.h

#include gl/glu.h

#include gl/glut.h

2、在工程中添加OpenGL的库,有关命令行加入,glu32 opengl32 glut32库就可以编译了。

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 吧,这是行业规范

最后,祝楼主学习愉快

C语言用Graphics如何画utahteapot(犹他茶壶)

用Grahpics画的,我也不知道怎么画,而且我也不知道什么是犹他茶壶。

我这里用个用利用OpenGL画的一个茶壶,不知道能不能帮助到你。

#include gl\glut.h

#include math.h

float theta = 0.0f;

GLfloat xa = 1.0f, ya = 0.5f, za = 0.0f;

GLfloat x2 = 1.0f, y2 = 0.5f, z2 = 0.0f;

bool turn1 = true;

void OnDisplay()

{

glClear(GL_COLOR_BUFFER_BIT);

glMatrixMode(GL_MODELVIEW);

glLoadIdentity();

if (turn1)

{

gluLookAt(xa, ya, za, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);

glColor3f(0.6, 0.2, 0.2);

}

else

{

gluLookAt(x2, y2, z2, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);

glColor3f(0.2, 0.2, 0.6);

}

glutSolidTeapot(2.0);

glutSwapBuffers();

}

void OnReshape(int w, int h)

{

glViewport(0, 0, w, h);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

glOrtho(-4.0, 4.0, -4.0, 4.0, -4.0, 4.0);

}

void OnIdle(void)

{

theta += 0.01;

if (theta = 360)

theta -= 360;

xa = cos(theta);

za = sin(theta);

if (theta + 0.1 360)

{

x2 = cos(theta + 0.1 - 360);

z2 = sin(theta + 0.1 - 360);

}

else

{

x2 = cos(theta + 0.1);

z2 = sin(theta + 0.1);

}

turn1 = !turn1;

glutPostRedisplay();

}

void Init()

{

glClearColor(0.0, 0.0, 0.0, 0.0);

glColor3f(0.2, 0.2, 0.6);

}

int main(int argc, char** argv)

{

glutInit(argc, argv);

glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);

glutInitWindowPosition(140, 80);

glutInitWindowSize(800, 800);

glutCreateWindow("cube");

glutReshapeFunc(OnReshape);

glutDisplayFunc(OnDisplay);

glutIdleFunc(OnIdle);

Init();

glutMainLoop();

}

opengl 用在C语言中时 程序里面使用的哪种基本数据类型

openGL自己有自己定义的类型和c语言的基础类型对应。

当然openGL没有规定必须要用他自己定义的类型。所以你完全可以用c语言里面的基本类型。

反正用来用去都是一样。

就是你如果用C的类型可能到不同的编译器或系统所占的内存有所不一样可能同样的程序在不同的编译器或系统中效果不一样。

而openGL库自己的类型则可以稍微避过这一点,达到一个“跨平台适配”的效果。

OpenGL编程问题

是你定义宏的时候出错了。

把:

#define

drawOneLine

(x1,y1,x2,y2)

glBegin(GL_LINES);glVertex2f((x1),(y1));glVertex2f((x2),(y2));glEnd();

改成;

#define

drawOneLine(x1,y1,x2,y2)

glBegin(GL_LINES);glVertex2f((x1),(y1));glVertex2f((x2),(y2));glEnd

注意"drawOneLine"和"("之间不要有空格

关于c语言opengl茶壶代码和opengl茶壶纹理映射的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/20715.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载