为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

绘制像素代码

2018-04-28 3页 doc 14KB 17阅读

用户头像

is_212655

暂无简介

举报
绘制像素代码绘制像素代码 #include #define FileName "Bliss.bmp" static GLint ImageWidth; static GLint ImageHeight; static GLint PixelLength; static GLubyte* PixelData; #include #include void display(void) { // 清除屏幕并不必要 // 每次绘制时,画面都覆盖整个屏幕 // 因此无论是否清除屏幕,结果都一样 // glClear(GL...
绘制像素代码
绘制像素代码 #include #define FileName "Bliss.bmp" static GLint ImageWidth; static GLint ImageHeight; static GLint PixelLength; static GLubyte* PixelData; #include #include void display(void) { // 清除屏幕并不必要 // 每次绘制时,画面都覆盖整个屏幕 // 因此无论是否清除屏幕,结果都一样 // glClear(GL_COLOR_BUFFER_BIT); // 绘制像素 glDrawPixels(ImageWidth, ImageHeight, GL_BGR_EXT, GL_UNSIGNED_BYTE, PixelData); // 完成绘制 glutSwapBuffers(); } int main(int argc, char* argv[]) { // 打开文件 FILE* pFile = fopen("Bliss.bmp", "rb"); if( pFile == 0 ) exit(0); // 读取图象的大小信息 fseek(pFile, 0x0012, SEEK_SET); fread(&ImageWidth, sizeof(ImageWidth), 1, pFile); fread(&ImageHeight, sizeof(ImageHeight), 1, pFile); // 计算像素数据长度 PixelLength = ImageWidth * 3; while( PixelLength % 4 != 0 ) ++PixelLength; PixelLength *= ImageHeight; // 读取像素数据 PixelData = (GLubyte*)malloc(PixelLength); if( PixelData == 0 ) exit(0); fseek(pFile, 54, SEEK_SET); fread(PixelData, PixelLength, 1, pFile); // 关闭文件 fclose(pFile); // 初始化GLUT并运行 glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA); glutInitWindowPosition(100, 100); glutInitWindowSize(ImageWidth, ImageHeight); glutCreateWindow(FileName); glutDisplayFunc(&display); glutMainLoop(); // 释放内存 // 实际上,glutMainLoop函数永远不会返回,这里也永远不会到达 // 这里写释放内存只是出于一种个人习惯 // 不用担心内存无法释放。在程序结束时操作系统会自动回收所有内存 free(PixelData); return 0; }
/
本文档为【绘制像素代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索