Tåke (Fog) Grunnleggende Grafikk Våren Tåke. pname og param. OpenGL innebygde tåke støtte som. Må enable tåke. Sett tåke tilstander

Like dokumenter
Bilder for Tekstur Mapping. Grunnleggende Grafikk Våren 2007

Lokalt Koordinatsystem. Grunnleggende Grafikk Våren Transformasjoner, Matriser og Scenegraf

Buffer i OpenGL. Grunnleggende Grafikk Våren Color Buffer Per-Pixel Buffer Storage. Color buffer. Kommando glgetintegerv(parameter, GLint *svar)

Dagens tema: Sjekking

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

Dynamic Programming Longest Common Subsequence. Class 27

Programmering i C++ Løsningsforslag Eksamen høsten 2005

Haskell. Kjetil Ørbekk. Programvareverkstedet, 19. mars 2009

Repetisjon fra sist - 1: Plan for dagen. Repetisjon fra sist 2: Hva jeg glemte sist: Nyttige Kommandoer

Kapittel 1 En oversikt over C-språket

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Web-programmering med JSP Løsningsforslag leksjon 3

Del 4 Noen spesielle C-elementer

Dagens tema: Sjekking (obligatorisk oppgave 3)

INF Seminaroppgaver til uke 3

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Oppgave 1 JK-flip-flop (Total vekt 20%)

File: C:\My Documents\fagprove\tp\klokke.txt , 08:42:20

Kontinuasjonseksamen

Del 1 En oversikt over C-programmering

Øvingsforelesning 5 Python (TDT4110)

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

UNIVERSITETET I OSLO

INF1010 våren januar. Objektorientering i Java

E K S A M E N. Grunnleggende datakunnskap og programmering 98HINDA / 98HINDB / 98HINEA 98HDMUA / 98HDMUB / 98HINGA

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Løsningsforslag

IN1010 våren januar. Objektorientering i Java

Bruk av interrupt og Timer i Arduino-program.

Øvingsforelesning 5 Python (TDT4110)

Programmering grunnkurs TDAT1001: Grafikkdel. Introduksjon

INF100 Institutt for informatikk Universitetet i Bergen Øving 5

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00

LO191D/LC191D Videregående programmering

EKSAMEN. Operativsystemer. 1. Læreboken "A Practical Guide to Red Hat Linux" av Mark Sobell 2. Maks. tre A-4 ark med selvskrevne notater.

Løsnings forslag i java In115, Våren 1998

Bygg et Hus. Steg 1: Prøv selv først. Sjekkliste. Introduksjon. Prøv selv

1 ØVING I WINDOWS FRA CHRISTIAN ANDOLO

Løsningsforslag til eksamen i IN 147 og IN 147A

UNIVERSITETET I OSLO

Løsningsforslag for eksamensoppgave, våren 2004

TDT4165 PROGRAMMING LANGUAGES. Exercise 01 Introduksjon til Oz

EGENDEFINERTE FUNKSJONER I SAS OG LITT OM OPEN SOURCE INTEGRASJON SAS FANS I STAVANGER , MARIT FISKAAEN (SAS INSTITUTE)

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak

Rapport Semesteroppgave i datasikkerhet Harald Dahle (795955) og Joakim L. Gilje (796196)

Kryptering med vigenere-metoden

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

Lenkelister. Lister og køer. Kopi av utvalgte sider fra forelesningen.

INF2100. Oppgaver 23. og 24. september 2010

IN 147 Program og maskinvare

Repetisjon. INF gruppe 13

OPPGAVE 5b og 8b Java Kode

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl

Rekursjon. Binærsøk. Hanois tårn.

Oppgave 1. Oppgave 2. Høgskolen i Østfold Avdeling for informasjonsteknologi

Løsnings forslag i java In115, Våren 1996

HØGSKOLEN I SØR-TRØNDELAG

IN2010: Algoritmer og Datastrukturer Series 2

ATI REMOTE WONDER Installeringsveiviser

INF2100. Oppgave 1, 2 og 3. Løsningsforslag til oppgaver 23. og 24. september Her er det mange mulige løsninger her er én: import java.io.

Dagens tema INF1010 INF1010 INF1010 INF1010

static int skrivetidsfrist = 0; // antall overskredet tid når skrive

Dagens tema INF1070. Info om C. Cs preprosessor. Feilsøking. Dag Langmyhr,Ifi,UiO: Forelesning 31. januar 2005 Ark 1 av 29

Informasjon om C. Dagens tema INF1070 INF1070 INF1070 INF1070. Den viktigste kilden til informasjon om C (utenom en god. C-funksjonene.

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Høgskolesenteret i Vestfold trend.doc Arnfinn Lunde

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

Løsnings forslag i java In115, Våren 1999

Dagens tema: 12 gode råd for en kompilatorskriver. Sjekking av navn. Lagring av navn. Hvordan finne et navn?

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Objektorientert design av kode. Refaktorering.

Dagens tema: 12 gode råd for en kompilatorskriver

Bygg et Hus. Introduksjon. Steg 1: Prøv selv først. Skrevet av: Geir Arne Hjelle

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I

Hangman. Level. Introduksjon

SQL Server guide til e-lector

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

Høgskolen i Gjøvik Institutt for informatikk og medieteknikk E K S A M E N. Grunnleggende programmering

IN2030. Oppgave 1. Løsningsforslag. Uke (Disse filene finnes også i mappen ~inf2100/e/e2/.)

UNIVERSITETET I OSLO

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

IN1140, H2018 gruppetime oppgaver Introduksjon til Tekst i Python

E K S A M E N. Grunnleggende datakunnskap og programmering 02HIND*, 02HINE*, 02HDMU*, 02HING*, 02HGEOMAA, 02HSIV5

Algoritmer og Datastrukturer

Løsningsforslag til eksamen i INF1000 våren 2006

Finne ut om en løsning er helt riktig og korrigere ved behov

Beskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015

Høgskolen i Gjøvik Institutt for informatikk og medieteknikk E K S A M E N. Grunnleggende programmering

Skilpadder hele veien ned

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO

En implementasjon av binærtre. Dagens tema. Klassestruktur hovedstruktur abstract class BTnode {}

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.

GJØVIK INGENIØRHØGSKOLE

INF1000 : Forelesning 1 (del 2)

Tell sekunder. Introduksjon. Skrevet av: Teodor Heggelund. I denne oppgaven skal vi lage vårt eget spill!

Visuell Programmering: Kom i gang med Processing

Oving 2. Oppgave 1. #include <stdio.h> int main(int argc, char **argv) { char *navn = argv[1]; printf ("Navnet ditt er %s\n", navn); } Oppgave 2

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

Transkript:

Tåke (Fog) OpenGL innebygde tåke støtte som Grunnleggende Grafikk Våren 2007 Tåke og OpenGL Extensions Blender hver piksel med tåke fargen, bruker blend faktor som er avhengig av distansen til kamera, tettheten til tåken, og valgt tåke modus. Arnt Roald Kristoffersen arntrk@hin.no D3390 Color out = blendfactor x Color in + (1-blendFactor) Color fog ITE 1605 Grunnleggende Grafikk for Spillprogrammering og ITE1530 Datamaskingrafikk Tåke pname og param Må enable tåke glenable(gl_fog); Sett tåke tilstander glfog{fi(pname, param) glfog{fiv(pname, *param)

Tåke Modus Color out = blendfactor x Color in + (1-blendFactor) Color fog 3 ligninger som bestemmer blendfactor GL_LINEAR blendfactor = (end depth)/(end-start) GL_EXP (-density x depth) blendfactor = e GL_EXP2 (-density x depth)2 blendfactor = e Tåke Koordinater Beregne tåke på bakgrunn av Høyde fra hav overflaten Manipulerer på depth verdien density - GL_FOG_DENSITY start - GL_FOG_START end - GL_FOG_END Tåke Koordinater Extension navn EXT_fog_coord Kommando glfogcoord{fd(coord) glfogcoord{fdv(*coord) Token Tåke Koordinater Bytte til bruke tåke koordinater glfogi(gl_fog_coord_src, GL_FOG_COORD) Bytte tilbake til beregning av dybde verdi glfogi(gl_fog_coord_src, GL_FRAGMENT_DEPTH) GL_FOG_COORD_SRC_EXT GL_FOG_COORD_EXT GL_FRAGMENT_DEPTH_EXT

Hvorfor trenger vi Extension Windows plattformen Støtter OpenGL 1.1 utgitt i 1996 OpenGL 2.1 Utgitt den August 2, 2006 Eneste mulighet for å få tilgang til OpenGL funksjonalitet utover versjon 1.1, under Windows En spesifikasjon Extension Navn Hva er extension Se neste slide Navn Streng Bruk med glgetstring(gl_extensions) Funksjoner Kan introdusere en eller flere funksjoner Tokens Kan definere en eller flere tokens eller enum Prefix ARB EXT ATI ATIX NV SGI SGIS SUN WIN Meaning/Vendor Extension Names Extension approved by OpenGL's Archtectural Review Board (First introduced with OpenGL 1.2) Extension agreed upon by more then one OpenGL vendor ATI Technologies ATI Technologies (experimental) NVIDIA Corporation Silicon Graphics Silicon Graphics (spesialized) Sun Microsystems Microsoft Offisielle OpenGL Extenstion Register http://oss.sgi.com/projects/ogl-sample/registry/ Bruke en Extension 1) Finne ut om en extension er støttet 2) Få tak i entry point for hver funksjonene som du ønsker å bruke 3) Definere de token som du skal bruke

Støttes Extension Funksjon Entry Point bool checkextension(char *extensionname) { char *extensionlist = (char *)glgetstring(gl_extensions); if (!extensionname!extensionlist) return false; while (*extensionlist) { unsigned int length = strcspn(extensionlist, " "); if (strlen(extensionname) == length && strncmp(extensionname, extensionlist, length) == 0) { return true; extensionlist += length + 1; Extension funksjonen (EXT_fog_coord) typedef void (APIENTRY * PFNGLFOGCOORDFPROC) (Glfloat); Må inkludere windows.h -> (APIENTRY) Deklerasjon av extension PFNGLFOGCOORDFPROC myglfogcoordf; Finne funksjonens Entry Point myglfogcoordf = (PFNGLFOGCOORDFPROC) wglgetprocaddress("glfogcoordfext"); return false; Deklarasjon av enum For EXT_fog_coord #define GL_FOG_COORD_SRC 0x8450 #define GL_FOG_COORD 0x8451 #define GL_FRAGMENT_DEPTH 0x8452 CGfxOpenGL.h Eksempel EXT_fog_coord // extension function and constants typedef void (APIENTRY * PFNGLFOGCOORDFPROC) (GLfloat); #define GL_FOG_COORD_SRC 0x8450 #define GL_FOG_COORD 0x8451 #define GL_FRAGMENT_DEPTH 0x8452 class CgfxOpenGL { private: PFNGLFOGCOORDFPROC myglfogcoordf; ; CgfxOpenGL.cpp CgfxOpenGL::CGfxOpenGL() { myglfogcoordf = NULL; bool CGfxOpenGL::Init() { if (checkextension("gl_ext_fog_coord")) { myglfogcoordf = (PFNGLFOGCOORDFPROC) wglgetprocaddress("glfogcoordfext");

WGL Extensions Introduksjon til GLee Spesific for Windows system Isteden for const GLubyte *glgetstring(gl_extensions) Så bruker vi const char *wglgetextensionsstringarb(hdc hdc) HDC er handler til rendringskonteksten GLee OpenGL Easy Extension library http://elf-stone.com/getfile.php?title=glee Vi skal se på følgende Oppsett av GLee Bruk av GLee Bruk av GLee med Core Extensions Oppsett av GLee Bruk av GLee Linux Pakk ut tarballen, og kjør medfølgende script for installering Windows Kopier GLee.h til (Visual Studio.NET 2005) C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include\gl Før du bruker Glee kan brukes Så må GLboolean GLeeInit() kalles Returnerer GL_TRUE Start av GLee var vellykket Returnerer GL_FALSE const char *GLeeGetErrorString(); Kopier GLee.lib C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Lib Glee.h skal inkluderes isteden for gl.h

Bruk av GLee For å sjekke en extension (GLEE_) if (GLEE_ARB_point_sprite) { glenable(gl_point_sprite_arb); Hvis OpenGL 1.4 er støttet if (GLEE_VERSION_1_4) { glsecondarycolor3f(0.5f, 0.3f, 1.0f); GLee med Core Extension Mange extension er en del av OpenGL Core Slik at man kan bruke glfogcoordf(); Isteden for glfogcoordfext(); Man kan bli fristet til å, skrive if (GLEE_EXT_fog_coord) glfogcoordf(); Mer solid måte if (GLEE_VERSION_1_4) glfogcoordf(); else if (GLEE_EXT_fog_coord) glfogcoordext();