12
Intro to RayGL Kris Zarns

Intro to RayGL

  • Upload
    aderyn

  • View
    41

  • Download
    0

Embed Size (px)

DESCRIPTION

Kris Zarns. Intro to RayGL. What it does. Creates SDL (scene description language) files for POVRay from OpenGL & Glut code One file per frame/swap-buffer Only requires minor modification to OpenGL code Displays original OpenGL. How it works. Man in the middle approach - PowerPoint PPT Presentation

Citation preview

Page 1: Intro to RayGL

Intro to RayGL

Kris Zarns

Page 2: Intro to RayGL

What it does

Creates SDL (scene description language) files for POVRay from OpenGL & Glut code One file per frame/swap-buffer Only requires minor modification to OpenGL

code Displays original OpenGL

Page 3: Intro to RayGL

How it works

Man in the middle approach Intercepts key OpenGL calls Builds SDL code to represent them Runs OpenGL calls

State machine approach Queries OpenGL for it's current state Inserts this state information into SDL code

Page 4: Intro to RayGL

How to use it

Include the files raygl.h and raygldefs.h in that order

Call rayglFrameBegin at the beginning of each frame Pass the output filename here, this increments

internally, if using lab machines I recommend something in /temp so you don't overrun your home directory

Setup camera & lighting before calling frameBegin

Call rayglFrameEnd at the end of each frame Call setRenderPov to turn SDL generation on

and off

Page 5: Intro to RayGL

How to use POVRay

For rendering a single frame try $POVRay +P +w800 +h600 <file> +P for pause when done +w/+h set window size +F[C,N,P,S,T] creates an output file of type

(Compressed Targa-24, PNG, PPM, System(bmp), or Targa-24)

-F turns file output off +o<file> lets you set the output file name

See POVRay documentation 2.1.2 for more options

Page 6: Intro to RayGL

Things it supports directly

Camera and scene gluPerspective,gluLookAt

Primitives glEnd, glBegin, glVertex[3i,3f,3d] Points, triangles, triangle strips, quad strips,

polygons Models

gluDisk, gluSphere, gluCylinder glutSolidCone, glutSolidCube, glutSolidSphere,

glutSolidTorus

Page 7: Intro to RayGL

Things it supports indirectly

Matrix Transformations Current matrix is polled at glBegin, so all

transforms are supported Material properties

This is in place, but was not tested during the last course

Texturing Coding is nearing completion

Lighting Support for multiple lights of all types in any color

Page 8: Intro to RayGL

Things to avoid

Avoid making openGL calls between glBegin/End

Avoid moving lights or camera mid frame Avoid placing lights inside of objects Avoid using an orthogonal view Avoid using non-planar polygons Avoid nested calls to code containing

frameBegin/frameEnd Avoid using display lists, they're not currently

supported

Page 9: Intro to RayGL

Using OpenGL texture objects

Create a list of texture names glGenTextures

To create each texture Bind a new texture name

glBindTexture Load the texture

glTexImage2D glBuild2DMipMaps

To use a texture GlBindTexture – bind the name of the texture Bind texture zero to stop texturing

Page 10: Intro to RayGL

Texturing in RayGL

Use texture objects as previously described During the loading of the texture create an

Image struct with the file name and texture data, see raygl.h

Pass the image struct to rayglCustomLoadedTexture

Adjust texture properties using rayglScaleTexture, rayglTranslateTexture, and rayglTextureType

Continue using textures as normal

Page 11: Intro to RayGL

Requests for new functionality

Contact me to see if there is work in progress Be prepared to explain how you plan to use it

and why Discuss with Dr.Marsh if work on this is

worthy of extra credit

Page 12: Intro to RayGL

Bugs

Compile with -wall Check glError If you are getting a segmentation fault,

consider first if your code may be mis-allocating memory

Please read the openGL spec before asking questions

Please provide a minimal test case if you find a problem with raygl

I can be reached by email at [email protected]