418382 สภาพแวดล้อมการทำงาน คอมพิวเตอร์กราฟิกส์ การบรรยายครั้งที่ 5 ประมุข ขันเงิน

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
E-COMMERCE WEBSITE Smartzap Co., Ltd.. Company Profile บริษัท สมาร์ทแซป จำกัด ก่อตั้งเมื่อปี 2543 (13 ปี ) ในช่วงยุค Internet เพิ่ง เริ่มต้น เป็นบริษัทที่ดำเนินงานทางด้าน.
Advertisements

John Rawls  John Rawls is the most famous American social contract theorist argued that “Justice is fairness” He Thought human natural have a appropriate.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Java Programming Language.
หลักการและแนวคิดการนำ สื่ออิเล็กทรอนิกส์ มาใช้ใน การเรียนการสอน ผศ. นพ. ทรงพล ศรีสุโข 30 ก. ย
THE PARTS OF A FLOWERING PLANT AND THEIR FUNTION.
คำสั่ง DISPLAY รูปแบบที่ 1 DISPLAY identifier-1, identifier-2 … literal-1 literal-2 [ UPON mnemonic-name ]  ตัวอย่าง DISPLAY STUDENT-NAME. DISPLAY.
Set is a basic term in Mathematics. There is no precise definition for term “set”, But roughly speaking, a set is a collection of objects, Things or symbols,
ขั้นตอนวิธีและเครื่องมือในการพัฒนาโปรแกรม (ต่อ)
จำนวน สถานะ NUMBER OF STATES. ประเด็นที่ สนใจ The number of distinct states the finite state machine needs in order to recognize a language is related.
Educational Objectives
Supreeya Wongtra-ngan,MD.,MHPEd. CLINICAL COMPETENCIES  Factual Knowledge  Technical Skill  Problem Solving Skill  Communication Skill  Manners &
Chapter 9 : Designing Approach
รายวิชา ง40206 โครงสร้างข้อมูลและขั้นตอนวิธี
Graphical User Interface charturong.ee.engr.tu.ac.th/CN208
Braille OCR Mobile Application
รู้จักกับเทคโนโลยี RFID เบื้องต้น
บทที่ 5 Texture Mapping Texture mapping ทำการ map หรืออวางรูปพื้นผิวแบบต่างๆลงบนโครงที่ได้จากขั้นตอนก่อนๆ เพื่อให้เริ่มเห็นเป็นรูปต้นๆ ขึ้นมาว่าอะไรขนาดเท่าไหร่ด้วย.
Database Management System
VARIABLES, EXPRESSION and STATEMENTS. Values and Data Types Value เป็นสิ่งพื้นฐาน มีลักษณะเป็น ตัวอักษร หรือ ตัวเลข อาทิ 2+2 หรือ “Hello world” Value.
อาจารย์ มธ. อธิบายการใช้ โมเดลของ
Data Structures and Algorithms
ระบบการจัดเก็บในคลังสินค้า
Stack.
: Chapter 1: Introduction 1 Montri Karnjanadecha ac.th/~montri Image Processing.
Color Standards A pixel color is represented as a point in 3-D space. Axis may be labeled as independent colors such as R, G, B or may use other independent.
ออโตมาตาจำกัด FINITE AUTOMATA
REGULAR EXPRESSION การบรรยายแบบสม่ำเสมอ
Helping you make better treatment decisions for your patients.
Shell Script Programming (Function)
Inductive, Deductive Reasoning ผศ.( พิเศษ ) น. พ. นภดล สุชาติ พ. บ. M.P.H.
Course Software Engineering SE Overview and Introduction.
Computer Graphics.
Stored Procedure.
การออกแบบและพัฒนาซอฟต์แวร์ บทที่ 7 การทดสอบโปรแกรม
Functions Standard Library Functions User-defined Functions.
สภาพแวดล้อมการทำงาน คอมพิวเตอร์กราฟิกส์ การบรรยายครั้งที่ 5 ประมุข ขันเงิน
Page: 1 โครงสร้างคอมพิวเตอร์ และภาษาแอสเซมบลี้ ผศ. บุรินทร์ รุจจน พันธุ์.. ปรับปรุง 19 ตุลาคม 2555 Introduction to Batch.
Menu and Interactive with Powerpoint ให้นำเรื่อง Input /Output Technology มา จัดทำ การนำเสนอ โดยใช้หลักการ Menu and Interactive with powerpoint มาประยุกต์
ตัวแปรกับชนิดของข้อมูล
Intervention Method for NCD Control กัณหา เกียรติสุต สำนักงานป้องกันควบคุมโรคที่ 6 ขอนแก่น.
Algorithm Efficiency There are often many approaches (algorithms) to solve a problem. How do we choose between them? At the heart of computer program.
ตัวแปรในภาษา GML ง การสร้างเกม คอมพิวเตอร์.
วิธีการ Auto ship.
Java Programming Language สาขาวิชาระบบสารสนเทศ คณะบริหารธุรกิจ มหาวิทยาลัยเทคโนโลยีราชมงคลกรุงเทพ.
ผัก. หน่อไม้ ฝรั่ง กะหล่ำ ปลี แค รอท กะหล่ำ ดอก.
การสร้าง WebPage ด้วย Java Script Wachirawut Thamviset.
ทุนทางปัญญา Intellectual Capital KM743 Session 3.1
Chapter 3 Simple Supervised learning
Chapter 1/1 Arrays. Introduction Data structures are classified as either linear or nonlinear Linear structures: elements form a sequence or a linear.
21 August ดรุณี ศมาวรรตกุล 1 2. ADT List - Unsorted list ADT - list implementation - Sorted List - Circular list - Doubly linked list.
Microprocessor and Interfacing PIC Flash Memory Segments 2K
 Mr.Nitirat Tanthavech.  HTML forms are used to pass data to a server.  A form can contain input elements like text fields, checkboxes, radio-buttons,
 How do we improve the test?  Why do we have to improve the test?
ปริมาณสัมพันธ์ ผู้สอน อ. ศราวุทธ แสงอุไร Composition Stoichiometry ว ปริมาณสัมพันธ์ สถานะของ สาร และเคมีไฟฟ้า นายศราวุทธ แสงอุไร ครูวิชาการสาขาเคมี
Linked List ( ต่อ ) Lecturer : Kritawan Siriboon, Room no. 913 Text : Data Structures & Algorithm Analysis in C, C++,… Mark Allen Weiss, Addison Wesley.
พื้นฐานการเขียนแบบทางวิศวกรรม
Chapter 9 ตัวชี้ pointer.
1. นี่เป็นสิ่งที่พระเยซูทรงทำ พระองค์ทรงรักษาทุกคน ที่เจ็บป่วยให้หายดี
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
บทที่ 4 ตัวแปร (Variables)
บทที่ 1 ความรู้เบื้องต้น เกี่ยวกับระบบสารสนเทศ
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 05: การวิเคราะห์ความซับซ้อนของ ขั้นตอนวิธีการเรียงลำดับข้อมูล.
แล้วไงเกี่ยวกับความจริง What About Truth?
การวิเคราะห์โจทย์ปัญหา (Problem Analysis)
Lesson 7-6: Function Operations
สารสนเทศศาสตร์เบื้องต้น
Natural Selection and Mutation
Color Standards A pixel color is represented as a point in 3-D space. Axis may be labeled as independent colors such as R, G, B or may use other independent.
Internal Logos DIY Design Guide V
Year 9 Term 1 Foundation (Unit 1) INTEGERS, ROUNDING AND PLACE VALUE
ใบสำเนางานนำเสนอ:

สภาพแวดล้อมการทำงาน คอมพิวเตอร์กราฟิกส์ การบรรยายครั้งที่ 5 ประมุข ขันเงิน

TEXTURE MAPPING

Textures Texture Object •An OpenGL data type that keeps textures resident in memory and provides identifiers to easily access them •Provides efficiency gains over having to repeatedly load and reload a texture •You can prioritize textures to keep in memory •OpenGL uses least recently used (LRU) if no priority is assigned Texture Object •An OpenGL data type that keeps textures resident in memory and provides identifiers to easily access them •Provides efficiency gains over having to repeatedly load and reload a texture •You can prioritize textures to keep in memory •OpenGL uses least recently used (LRU) if no priority is assigned

Step 1 – create Texture Objects glGenTextures(1, &texture[texture_num]); •First argument tells GL how many Texture Objects to create •Second argument is a pointer to the place where OpenGL will store the names (unsigned integers) of the Texture Objects it creates –texture[ ] is of type GLuint glGenTextures(1, &texture[texture_num]); •First argument tells GL how many Texture Objects to create •Second argument is a pointer to the place where OpenGL will store the names (unsigned integers) of the Texture Objects it creates –texture[ ] is of type GLuint

Step 2 – Specify which texture object is about to be defined Tell OpenGL that you are going to define the specifics of the Texture Object it created •glBindTexture(GL_TEXTURE_2D, texture[texture_num]); –Textures can be 1D and 3D as well Tell OpenGL that you are going to define the specifics of the Texture Object it created •glBindTexture(GL_TEXTURE_2D, texture[texture_num]); –Textures can be 1D and 3D as well

Step 3 – Begin defining texture glTexParameter() •Sets various parameters that control how a texture is treated as it’s applied to a fragment or stored in a texture object •// scale linearly when image bigger than texture glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_ FILTER,GL_LINEAR); • // scale linearly when image smaller than texture glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_ FILTER,GL_LINEAR); glTexParameter() •Sets various parameters that control how a texture is treated as it’s applied to a fragment or stored in a texture object •// scale linearly when image bigger than texture glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_ FILTER,GL_LINEAR); • // scale linearly when image smaller than texture glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_ FILTER,GL_LINEAR);

Step 4 – Assign image data •glTexImage2D(); GL_TEXTURE_2D (2D Texture) 0 (level of detail 0) 3 (3 components, RGB) image1->sizeX(size) image1->sizeY(size) 0 (no border pixel) GL_RGB (RGB color order) GL_UNSIGNED_BYTE (unsigned byte data) image1->data (pointer to the data))

glTexImage2D – Arg 1 GLenum target •GL_TEXTURE_{1|2|3}D •GL_PROXY_TEXTURE_2D –Provides queries for texture resources –Proceed with hypothetical texture use (GL won’t apply the texture) –After query, call GLGetTexLevelParamter to verify presence of required system components –Doesn’t check possibility of multiple texture interference GLenum target •GL_TEXTURE_{1|2|3}D •GL_PROXY_TEXTURE_2D –Provides queries for texture resources –Proceed with hypothetical texture use (GL won’t apply the texture) –After query, call GLGetTexLevelParamter to verify presence of required system components –Doesn’t check possibility of multiple texture interference

glTexImage2D – Arg 2 GLint level •Used for Level of Detail (LOD) •LOD stores multiple versions of texture that can be used at runtime (set of sizes) •Runtime algorithms select appropriate version of texture –Pixel size of polygon used to select best texture –Eliminates need for error-prone filtering algorithms GLint level •Used for Level of Detail (LOD) •LOD stores multiple versions of texture that can be used at runtime (set of sizes) •Runtime algorithms select appropriate version of texture –Pixel size of polygon used to select best texture –Eliminates need for error-prone filtering algorithms

glTexImage2D – Arg 3 GLint internalFormat •GL defines 38 symbolic constants that describe which of R, G, B, and A are used in internal representation of texels •Provides control over things texture can do –High bit depth alpha blending –High bit depth intensity mapping –General purpose RGB •GL doesn’t guarantee all options are available on given hardware GLint internalFormat •GL defines 38 symbolic constants that describe which of R, G, B, and A are used in internal representation of texels •Provides control over things texture can do –High bit depth alpha blending –High bit depth intensity mapping –General purpose RGB •GL doesn’t guarantee all options are available on given hardware

glTexImage2D – Args 4-6 GLsizei width GLsizei height •Dimensions of texture image –Must be 2 m + 2b (b=0 or 1 depending on border) –min, 64 x 64 GLint border •Width of border (1 or 0) –Border allows linear blending between overlapping textures –Useful when manually tiling textures GLsizei width GLsizei height •Dimensions of texture image –Must be 2 m + 2b (b=0 or 1 depending on border) –min, 64 x 64 GLint border •Width of border (1 or 0) –Border allows linear blending between overlapping textures –Useful when manually tiling textures

glTexImage2D – Args 7 & 8 GLenum format •Describe how texture data is stored in input array –GL_RGB, GL_RGBA, GL_BLUE… GLenum type •Data size of array components –GL_SHORT, GL_BYTE, GL_INT… GLenum format •Describe how texture data is stored in input array –GL_RGB, GL_RGBA, GL_BLUE… GLenum type •Data size of array components –GL_SHORT, GL_BYTE, GL_INT…

glTexImage2D – Arg 9 Const GLvoid *texels •Pointer to data describing texture map Const GLvoid *texels •Pointer to data describing texture map

Step 5 – Apply texture Before defining geometry •glEnable(GL_TEXTURE_2D); •glBindTexture(GL_TEXTURE_2D, texture[0]); •glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); Before defining geometry •glEnable(GL_TEXTURE_2D); •glBindTexture(GL_TEXTURE_2D, texture[0]); •glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);

glTexEnv() GL_TEXTURE_ENV_MODE GL_DECAL (alpha blends texture with poly color) GL_REPLACE (straight up replacement) GL_MODULATE (texture application is a function of poly lighting) GL_BLEND (texture controls blending with another color) If GL_BLEND selected, second call to glTexEnv() must specify GL_TEXTURE_ENV_COLOR 4-float array for R,G,B,A blend First argument to function is always GL_TEXTURE_ENV

MIPMAPPING

MIPMAPS With versus without MIPMAP

Filtering OpenGL tries to pick best mipmap level Question: Which texel corresponds to a particular pixel? GL_NEAREST (Point Sampling) •Pick the texel with center nearest pixel GL_LINEAR (Bilinear Sampling) •Weighted average of 2x2 closest texels GL_NEAREST_MIPMAP_LINEAR •Average nearest texels from two mipmap levels GL_LINEAR_MIPMAP_LINEAR (Trilinear) •Average two averaged texels from two mipmaps OpenGL tries to pick best mipmap level Question: Which texel corresponds to a particular pixel? GL_NEAREST (Point Sampling) •Pick the texel with center nearest pixel GL_LINEAR (Bilinear Sampling) •Weighted average of 2x2 closest texels GL_NEAREST_MIPMAP_LINEAR •Average nearest texels from two mipmap levels GL_LINEAR_MIPMAP_LINEAR (Trilinear) •Average two averaged texels from two mipmaps

DEVIL

DevIL • เป็นไลบรารีสำหรับอ่านและเขียนไฟล์รูปภาพต่างๆ – นามสกุล.jpg,.png,.tiff, ฯลฯ • ติดต่อกับ OpenGL ได้ดี • ดาวน์โหลด – – DevIL SDK for 32-bit Windows • Unzip แล้ว – นำไฟล์.dll ไปใส่ไว้ใน bin ของที่ไว้ไฟล์สำหรับ CMake – นำไฟล์.lib ไปใส่ไว้ใน lib ของที่ไว้ไฟล์สำหรับ CMake – นำไฟล์.h ต่างๆ ไปใส่ไว้ใน include/IL ของที่ไว้ไฟล์ สำหรับ CMake

ไฟล์ที่ต้อง include • สั่ง – #include ไว้ที่หัวโปรแกรม

ฟังก์ชัน init ต่างๆ • มีไว้เพี่อให้ DevIL ทั้งค่าเริ่มต้นของตนเอง • ในฟังก์ชัน main สั่ง – ilInit(); – iluInit(); ก่อนเรียกฟังก์ชันอื่นๆ ทั้งหมด • แล้วเรียก – ilutInit(); หลังเรียก glutInit(…);

Image Object • DevIL มีระบบ “ รูป ” คล้ายกับระบบ texture ของ OpenGL – สร้างด้วย ilGenImages – กำหนดด้วย ilBindImage – อ่านรูปจากไฟล์ด้วย ilLoadImage – ลบด้วย ilDeleteImages

ilGenImages • ILvoid ilGenImages( ILsizei Num, ILuint *ids); – สร้าง image object หลายๆ อัน – argument แรกคือจำนวน image object ที่ต้องการ สร้าง – argument ที่สองคืออะไรสำหรับใส่ “ ชื่อ ” ของ image object – การสร้าง image object เพียงแค่อันเดียว • ILuint id; • ilGenImages(1, &id); – การสร้าง image object หลายอัน • ILuint id[3]; • ilGenImages(3, id);

ilBindImage • ILvoid ilBindImage(ILuint id) – ใช้เซต image object ปัจจุบันให้เป็น image object ที่มีชื่อที่กำหนด – ตัวอย่าง • ILuint id; • ilGenImages(1, &id); • ilBindImage(id);

ilLoadImage • ILboolean ilLoadImage(const char *FileName) – ใช้สำหรับอ่านรูปจากไฟล์ที่กำหนดชื่อให้มายัง image object ปัจจุบันที่ bind ไว้แล้ว – argument แรกคือชื่อไฟล์ • DevIL จะรู้ว่าเป็นไฟล์ชนิดใดโดยอัตโนมัติ – คืนค่า “ จริง ” ถ้าสามารถอ่านรูปได้และคืนค่า “ เท็จ ” ถ้า อ่านไม่สำเร็จ – ตัวอย่าง • ILuint id; • ilGenImages(1, &id); • ilBindImage(id); • ilLoadImage(“test.jpg”);

ilDeleteImages • ILvoid ilDeleteImages( ILsizei Num, ILuint *ids); – ลบ image object หลายๆ อัน – argument แรกคือจำนวน image object ที่ต้องการลบ – argument ที่สองคืออะไรสำหรับใส่ “ ชื่อ ” ของ image object – การลบ image object เพียงแค่อันเดียว • ILuint id; • … • ilDeleteImages(1, &id); – การสร้าง image object หลายอัน • ILuint id[3]; • ilGenImages(3, id); • … • ilDeleteImages(3, id);

ilConvertImage • ILboolean ilConvertImage( ILenum DestFormat, ILenum DestType ) – ใช้สำหรับแปลงข้อมูลรูปภาพที่อยู่ในภาพที่ bind ไว้เป็น รูปแบบอื่น – DestFormat คือรูปแบบสีของแต่ละ pixel • IL_RGB, IL_RGBA, IL_BGR, IL_BGRA, IL_LUMINANCE, IL_COLOUR_INDEX – DestType คือชนิดข้อมูลที่ใช้เก็บสีแต่ละช่อง • IL_BYTE, IL_UNSIGNED_BYTE, IL_SHORT, IL_UNSIGNED_SHORT, IL_INT, IL_UNSIGNED_INT, IL_FLOAT, IL_DOUBLE

การส่งข้อมูลรูปภาพเข้า OpenGL Texture • เรียก glTexImage2D โดยให้ข้อมูลต่างๆ จาก Image Object – internalFormat ให้ป้อน ilGetInteger(IL_IMAGE_BPP) – width ให้ป้อน ilGetInteger(IL_IMAGE_WIDTH) – height ให้ป้อน ilGetInteger(IL_IMAGE_HEIGHT) – format ให้ป้อน ilGetInteger(IL_IMAGE_FORMAT) – type ให้ป้อน ilGetInteger(IL_IMAGE_TYPE) – data ให้ป้อน ilGetData()

ilGetData • ILubyte* ilGetData(ILvoid) – คืนข้อมูลของ image object ทิ่ bind ไว้เป็นอะเรย์ข อง unsigned byte

ตัวอย่างการใช้งาน glGenTextures(1, &tex0); glBindTexture(GL_TEXTURE_2D, tex0); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); ILuint image0; ilGenImages(1, &image0); ilBindImage(image0); char imageName[] = "../../data/yellow-flowers.jpg"; ilLoadImage(imageName); ilConvertImage(IL_RGB, IL_UNSIGNED_BYTE); gluBuild2DMipmaps(GL_TEXTURE_2D, ilGetInteger(IL_IMAGE_BPP), ilGetInteger(IL_IMAGE_WIDTH), ilGetInteger(IL_IMAGE_HEIGHT), ilGetInteger(IL_IMAGE_FORMAT), ilGetInteger(IL_IMAGE_TYPE), ilGetData()); ilDeleteImages(1, &image0);