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
Intro to RayGL
Kris Zarns
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 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
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
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
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
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
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
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
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
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
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]