[July 2001] This page has not been actively maintained for several years. I've removed and updated some links, but if you're looking for recent informaiton, you'll find it elsewhere.
A great meta-resource for all 3D software: the 3d Engines List
: We'd like to start using OpenGL for our graphics programming, but : it seems to be a lot slower than GL. For instance, glDrawPixels : appears to be about 30% slower than GL's lrectwrite. Which means : that it's too slow for us. This is on an SGI Indy(R4600) running IRIX : 5.3. Is there any way to get the same performance out of OpenGL that : we get out of GL?I wouldn't be surprised if you're being bitten by the buggy version of "libtk" thatSGI distributed. The bug is that the sense of the TK_IS_DIRECT bit is inverted.The effect of the bug is that all data is squeezed through a pipe to the X server,rather than executing directly, even when running on the local machine.
The easiest way to detect that this is happening is to run gr_top and notice ifa second copy of Xsgi starts running and consuming lots of CPU when your applicationis doing graphics output.
There are at least two versions of libtk for the SGI floating around,both distributed from sgigate.sgi.com. The "bad" version is bundledin sgigate.sgi.com pub/opengl/contrib/opengl.tar.Z, The "other" (maybegood, I don't know) copy is from pub/opengl/contrib/libtk.tar.Z
lido 143 % diff tk.h tk.h.~1~ 76,77c76,77 --- /* bad version */ #define TK_IS_DIRECT(x) (((x) & TK_INDIRECT) == 0) #define TK_IS_INDIRECT(x) (((x) & TK_INDIRECT) != 0) --- /* good version */ #define TK_IS_DIRECT(x) (((x) & TK_INDIRECT) != 0) #define TK_IS_INDIRECT(x) (((x) & TK_INDIRECT) == 0)
Here are some timings, run under irix 5.3 on a 150mhz indigo2 extreme.Naturally, your mileage will vary, but the general order of magnitudeshould be fairly stable.
Push/pop attribute timings (milliseconds) 0.02860 - 1 - bit GL_ACCUM_BUFFER_BIT (200) 0.04612 - 1 - bit GL_COLOR_BUFFER_BIT (4000) 0.03243 - 1 - bit GL_CURRENT_BIT (1) 0.04020 - 1 - bit GL_DEPTH_BUFFER_BIT (100) 0.17620 - 1 - bit GL_ENABLE_BIT (2000) 0.02818 - 1 - bit GL_EVAL_BIT (10000) 0.03436 - 1 - bit GL_FOG_BIT (80) 0.02811 - 1 - bit GL_HINT_BIT (8000) 0.15582 - 1 - bit GL_LIGHTING_BIT (40) 0.03492 - 1 - bit GL_LINE_BIT (4) 0.02789 - 1 - bit GL_LIST_BIT (20000) 0.02814 - 1 - bit GL_PIXEL_MODE_BIT (20) 0.02784 - 1 - bit GL_POINT_BIT (2) 0.03602 - 1 - bit GL_POLYGON_BIT (8) 0.03798 - 1 - bit GL_POLYGON_STIPPLE_BIT (10) 0.03129 - 1 - bit GL_SCISSOR_BIT (80000) 0.03189 - 1 - bit GL_STENCIL_BUFFER_BIT (400) 0.04472 - 1 - bit GL_TEXTURE_BIT (40000) 0.06708 - 1 - bit GL_TRANSFORM_BIT (1000) 1.82357 - 1 - bit GL_VIEWPORT_BIT (800) 0.00155 - 1 - Save/restore GL_LINE_SMOOTH enable manually