VR – OpenGL 2D.

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

第一章 导论. 第一章 导论 参考文献 孔令德.计算机图形学基础教程(Visual C++版) 孔令德.计算机图形学实践教程(Visual C++版) 胡事民.计算机图形学基础教程.
S5MathsCH1&2Notes 等差與等比數列
第5章 HTML 標籤介紹.
嵌入式图形显示.
Adobe Illustrator Speaker:林昱志.
XML 第05讲 使用CSS显示XML.
基于VC++的数字图像特效处理系统的设计与实现
第一章 導論.
数字图像处理 刘伯强 山东大学生物医学工程.
顏色與背景CSS樣式.
計算機概論 請老師填入姓名主講 課本:數位傳真2012 博碩文化出版發行.
计算机图形学 讲 授:董兰芳 研究方向:科学计算可视化 图形、图像处理 模式识别 中国科学技术大学 视觉计算与可视化实验室
OOSDL 靜宜大學資工系 蔡奇偉 副教授
C语言程序设计 课程 第5章 数组 主讲:李祥 博士、副教授 单位:软件学院软件工程系.
第一章 C语言概述.
第二章 C# 基础知识.
Chapter 2. The Graphics Rendering Pipeline 图形绘制流水线
第 13 章 用CSS 設定 文字顏色與背景.
OpenGL常见问题.
第3章 變數、資料型別與運算子.
C 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
OpenGL使用简介.
C++ 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
3D PACMAN! Student: Chia-Wei Yao ID:
第12章 從C到C++語言 12-1 C++語言的基礎 12-2 C++語言的輸出與輸入 12-3 C++語言的動態記憶體配置
C 語言簡介 - 2.
Scratch程式設計 2016/04/06.
数字图像处理(2) 图像文件格式 东北林业大学信息学院 任洪娥
Introduction to OpenGL (1)
Computational Photography final project- Histogram Equalization
第三章 基本觀念 電腦繪圖與動畫 (Computer Graphics & Animation) Object Data Image
第3章 變數、資料型別與運算子 3-1 變數與資料型別的基礎 3-2 變數的命名與宣告 3-3 資料型別 3-4 運算式與運算子
2 数字图像基础 赵国庆 博士 北京师范大学教育技术学院
多媒體概論報告-BMP 組員名稱: 盧彥良-資料蒐集 周誠哲-資料蒐集
Introduction to OpenGL (2)
HTML & CSS.
CSS樣式 靜宜大學 資管系 楊子青.
第一章 數位影像的概念.
Attributes of Output Primitives
第一單元 建立java 程式.
第三章 基本觀念 電腦繪圖與動畫 (Computer Graphics & Animation) Object Data Image
VIDEO COMPRESSION & MPEG
六、函数 教学目标: 函数的概念、定义、调用和返回 带自定义函数的程序设计 递推算法 递归思想及算法实现 函数的参数传递方式 C语言程序设计.
影像處理的基本知識 影像數位化 數位影像的基本概念.
第三章 C++的语句和简单的程序设计 主要内容:
期末考.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
林福宗 清华大学 计算机科学与技术系 2008年9月 2019年5月5日 多媒体技术教程 第4章 彩色数字图像基础 林福宗 清华大学 计算机科学与技术系 2008年9月.
C qsort.
GLUT 事件處理函式 靜宜大學資管系 蔡奇偉 副教授
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
What color is it?.
第二章 类型、对象、运算符和表达式.
3D Game Programming 2D game
重庆市第一0四中学 王继军.
OpenGL 基础 计算机科学与技术系.
坐標幾何的基本概念 Title page: Font size 36, bold, theme color of the chapter (red for geometry, blue for algebra, green for statistics)
第五章 逻辑运算和判断选取控制 §5.1 关系运算符和关系表达式
多媒體網頁 授課教師:葉生正教授.
CSS基礎 靜宜大學 資管系 楊子青.
Go 语言编程 —— 平台研发部 吴植民.
《数据结构与算法设计》第一部分 面向对象的C++程序设计基础.
Java语言程序设计 清华大学出版社 第6章 java图形与图像处理.
第2章 Java语言基础.
交互式计算机图形处理系统 哈尔滨工业大学计算机学院 唐好选 2019年7月27日.
多重條件選擇敘述
C#快速導讀 流程控制.
第六章 复合数据类型 指针的声明与使用 数组的声明与使用 指针与数组的相互引用 字符串及相关库函数 new与delete
第二节 偏 导 数 一、 偏导数概念及其计算 二 、高阶偏导数.
Presentation transcript:

VR – OpenGL 2D

大綱 image、pixel和color基本概念 OpenGL 2D functions 繪圖流程和相關Library 遊戲和輸入控制 參考資料 Demo

image、pixel和color 基本概念

Pixel and Color Pixel: picture element即圖上的一點 顏色:可由(Red, Green, Blue)三原色組合,每個顏色1 Byte,組成全彩 (0, 0, 0) 表示黑色 (255, 0, 0) 表示紅色 (255, 255, 255) 表示白色

BMP image Image:可看成一維Pixel Array, 每個Pixel由RGB組成,共24bit Pixel的其他表示法 lookup table

OpenGL 2D function

Positioning Image Primitives glRasterPos3f( x, y, z ) raster position transformed like geometry 若超過viewport的邊界 會被忽略 may need to fine tune viewport for desired results Raster Position X ->

OpenGL raster display glReadPixels(); glCopyPixels(); glDrawPixels() framebuffer memory glReadPixels(); glCopyPixels(); glDrawPixels()

glDrawPixels( width, height, format, type, pixels ) Rendering Images glDrawPixels( width, height, format, type, pixels ) render pixels with lower left of image at current raster position numerous formats and data types for specifying storage in memory best performance by using format and type that matches hardware

Reading Pixels Framebuffer pixel copy glReadPixels( x, y, width, height, format, type, pixels ) read pixels from specified (x,y) position in framebuffer pixels automatically converted from framebuffer format into requested format and type Framebuffer pixel copy glCopyPixels( x, y, width, height, type ) copy pixels in the frame buffer to current raster position

放大縮小 glPixelZoom() glPixelZoom(水平軸倍數, 垂直軸倍數) Ex:

繪圖流程和相關Library

RGBpixmap.h #include "RGBpixmap.h“ RGBpixmap pic; //宣告一張背景圖 //讀檔 pic.readBMPFile(“background.bmp”); 讀取的必須是24bit的bmp檔 pic.nRows //int 列數 pic.nCols //int 行數 pic.draw() //繪圖

繪圖基本流程 void myDisplay(void) { glClear(GL_COLOR_BUFFER_BIT); glRasterPos2i(0, 0); //繪圖的左下角 pic.draw(); //繪圖 glutSwapBuffers(); }

透明圖 RGBApixmap Alpha: 透明色 RGBApixmap pic; //宣告一張具透明色圖片 (232, 248, 248) Alpha: 透明色 RGBApixmap pic; //宣告一張具透明色圖片 pic.setChromaKey(232, 248, 248); //將圖片中的某個顏色設為透明 Pic.blend(); //透明圖的繪圖函式

字型設定 font.h GLFONT *Font; //宣告 GLFONT *FontCreate(HDC hdc, const char *typeface, int height, int weight, DWORD italic); typeface 字形名稱 height 字形高度 weight 粗體設定 italic 斜體設定 Ex: Font = FontCreate(wglGetCurrentDC(), "Times", 32, 0, 1);

字型顯示 font.h #include <string.h> //for sprintf(); 在display()內 char mss[30]; sprintf(mss, "Score %d", Gamescore); glColor3f(1.0, 0.0, 0.0); //設定字型顏色 glRasterPos2i(10, 450); //設定字型左下角起點 FontPrintf(Font, 1, mss);

遊戲和輸入控制

Game 互動性 玩家藉由鍵盤或搖桿輸入,畫面會因此做反應。 目的?分數? 好不好玩?

利用鍵盤輸入使圖片移動 在Speckeyfunc() RGBApixmap pic[3]; 在Display() switch(key) { case GLUT_KEY_LEFT: picX -= 5; break; case GLUT_KEY_RIGHT: picX += 5; …….. } glutPostRedisplay(); RGBApixmap pic[3]; 在Display() glRasterPos2i(picX, picY); pic[whichPic].blend();

換圖 在Speckeyfunc() case GLUT_KEY_LEFT: picX -= 5; if (whichPic==0) whichPic=1; else whichPic=0; break; case GLUT_KEY_RIGHT: picX += 5; 1

轉方向 int DirectState=0; 在Speckeyfunc() 在Display() if(DirectState==0) { case GLUT_KEY_LEFT: picX -= 5; if (whichPic==0) whichPic=1; else whichPic=0; DirectState=1; break; case GLUT_KEY_RIGHT: …… DirectState=0; 在Display() if(DirectState==0) { glPixelZoom(1.0, 1.0); glRasterPos2i(picX, picY); }else { glPixelZoom(-1.0, 1.0); glRasterPos2i(picX+pic[whichPic].nCols, picY); } pic[whichPic].blend();

glutTimerFunc() glutTimerFunc(int msecs, (*func)(int value), 登記一個func,在經過msecs毫秒後呼叫,並將value值設給func Func的宣告 void jump(int i);

How to use time funtion 2 void jump(int i) { whichPic=2; //切換到jump圖片 if (i<5) picY+=4; //前五次向上移 else picY-=4; //後幾次向下移 if(i<10) { i++; glutTimerFunc( 100, jump, i); //呼叫time fution }else { whichPic=0; //回復原先狀態 jumpState=0; } glutPostRedisplay(); 2

Jump-keyfuntion case 'm': if(jumpState==0) { jumpState=1; Gamescore++; jump(0); } break;

全螢幕和Gamemode 切換至全螢幕 和目前解析度一樣 glutFullScreen(); 切換全螢幕 可自行設解析度 切換至全螢幕 和目前解析度一樣 glutFullScreen(); 切換全螢幕 可自行設解析度 寫在case GLUT_KEY_F1:

參考資料 GLUT 使用說明 用google查glut game第一個連結 OpenGL 超級手冊 Ch7 OpenGL Programming Guide Ch8 http://ask.ii.uib.no/ebt-bin/nph-dweb/dynaweb/SGI_Developer/OpenGL_PG OpenGL官方網站Http://www.opengl.org