1,346 reputation
28
bio website nothing-inc.com
location Cape Coral, FL
age 30
visits member for 1 year, 2 months
seen Oct 26 at 2:01

My interest in Computer Graphics dates back to AlphaWorld (1995), the first true 3D internet-based virtual world that allowed real-time collaborative construction. In 1998, I began to dabble in OpenGL and have since amassed an expert knowledge in OpenGL and Computer Graphics in general.

Outside of Computer Graphics, I spent a great deal of my academic career working with Real-Time Safety Critical Embedded Systems based on the VxWorks platform. My research has been published in a variety of fields including Machine Learning, Real-Time Operating Systems and Fault Tolerance.

   profile for Andon M. Coleman on Stack Exchange, a network of free, community-driven Q&A sites


Sep
21
comment OpenGL segfault in DrawElements
That is not completely accurate. glVertexAttribLPointer (...) is for double and dvecN vertex attributes, which your shader is not using. To use glVertexAttribLPointer meaningfully would require you to re-write a line in your shader (in dvec4 in_Position).
Aug
24
awarded  Yearling
Jun
22
comment Should all primitives be GL_TRIANGLES in order to create large, unified batches?
GL_TRIANGLE_STRIP and GL_TRIANGLE_FAN are counter-productive if you are trying to group meshes together. You have to insert degenerate triangles or primitive restart indices in order to do that. In reality, the primary benefit of strips (cache efficiency) can be achieved just by using an indexed list of triangles in that order. Of course if you used strip order verbatim you would have winding issues, it is not the vertex order that you need to duplicate but the triangle order.
Jun
22
comment Should all primitives be GL_TRIANGLES in order to create large, unified batches?
Triangle strips / fans are about more than just reducing the number of vertices that need to be uploaded to the GPU. They re-use vertices in an ordered pattern, which makes them much more cache friendly and that ultimately translates to fewer redundant vertex shader invocations because the post-T&L cache hit rate is higher. You do not need an actual strip primitive to take advantage of this, just supply a list of indices in that order. It is not as big a deal on modern hardware, but back in the day properly supplying vertices in strip-order was hugely important for performance.
Jun
22
answered Obtain linear depth values on FBO and deal with small differences
Jun
21
comment Accessing uniform variables from a Cg shader in OpenGL
Sorry, I have not used Cg in about 12 years. I think the original "The Cg Tutorial" is available for free from NVidia these days though. That explains all of the basics even though it is about 12 years old. See here for more details. Unity did not even exist when that book was written, so I have no idea what you are talking about to be honest though ;)
Jun
21
comment Scaling issues with Open GL viewport / scissor box (Trying to draw outside of viewport)
The scissor test occurs after rasterization, so you can actually slightly hurt performance using that rather than clipping things using the viewport / projection matrix. Depending on the implementation, it might even be implemented after shading. There is no legitimate reason it would have to be done that way (e.g. fragment shaders cannot change the location of fragments), but that is where it started out when the programmable pipeline was introduced (along with late Z and late stencil tests).
Jun
21
comment Scaling issues with Open GL viewport / scissor box (Trying to draw outside of viewport)
You are abusing the term viewport, by the way. That is the final step in the vertex transformation process (object-space -> ... -> window-space (viewport transform)). Since GL ES does not have things like rasterpos, your only method of placing something on the screen starts with a vertex, which is always restricted to your viewport. So drawing outside of it is effectively impossible (ES 2.0 does not even have glBlitFramebuffer). Why do not you just draw your special stuff using different viewports / projection matrices and avoid the scissor box altogether?
Jun
21
comment Accessing uniform variables from a Cg shader in OpenGL
You do know that Cg is not simply a compatibility layer for GLSL right? It has its entire own runtime API because it can compile code to ARB VP/FP, dozens of NV assembly languages and of course GLSL.
Jun
21
comment Can you specify which VBO/EBO to use with glDrawElements?
You can if need be, or you could just combine everything into one buffer and draw different parts of that buffer. Ultimately I think what you may want is instancing, but to make instancing work efficiently you need to be drawing hundreds if not thousands of voxels with the same basic properties (e.g. texture, shader, etc.).
Jun
20
answered Can you specify which VBO/EBO to use with glDrawElements?
Jun
19
comment Was there any equivalent of glVertex3f in Direct3D?
If anything, I would say Execute Buffers were more akin to display lists, really.
Jun
19
comment Was there any equivalent of glVertex3f in Direct3D?
Once upon a time, DirectX did have an immediate/retained mode, but they moved away from that a long time ago. You would have to go back to Direct3D 5.0 and Execute Buffers. Fortunately, I never had the displeasure of working with a version of D3D that old so I cannot tell you much more than that.
Jun
18
comment What are the tools required to learn in order to create atari 2600 Games
Speak of the devil, that is all explained in the link in the first comment :P That really ought to be expanded into an answer, perhaps a community answer. This is a valid question if you replace "to learn" with "for use".
Jun
18
comment What are the tools required to learn in order to create atari 2600 Games
You will need to learn 6502 assembly language, beyond that everything else is subjective. Fortunately, 6502 and Motorola 68K are surprisingly similar, so if you have experience with the more common 68K you should not be completely lost.
Jun
18
comment Problem draw SkyBox behind my sun - XNA
It should not be possible to make your skybox bigger. The entire idea behind a skybox is that it cover the bounds of your viewing volume. What you probably want is simply not to depth test your sun against the sky at all. Think of the sun as an object infinitely far away for the purposes of lighting and for this as well. Basically, just stop writing to the depth buffer when you draw your skybox and assign your sun the depth of your far plane and you will be good.
Jun
17
comment What is an optimum failure rate that will keep people coming back to my game?
I do not think there is one - consider the Rubik's cube. That has a 99.9% failure rate for most people, yet it is ubiquitous. There is no notion of DLC for a Rubik's cube (or many computer puzzle games), so the manufacturer has to sell it once and even if the end-user never solves the thing or it collects dust that's good enough.
Jun
14
comment Using VBOs for the begginer
If you gave the triangle "more points to connect to", it would not be a triangle anymore. Each set of 3 vertices when using GL_TRIANGLES is a unique, unconnected triangle primitive. There are other types of triangles that have connectivity such as GL_TRIANGLE_STRIP or GL_TRIANGLE_FAN, but you are not using them here.
Jun
13
comment Tool to simulate color blindness
@ClassicThunder: It is definitely caused by a physical defect in the eye, but its effect is entirely perceptual. That is to say, the brain can compensate much the same way that it already flips the image received on the retina; it can be re-trained to compensate for radical changes as demonstrated here (see "Experimental Support").
Jun
13
comment Tool to simulate color blindness
I do not think so, color blindness is not entirely physical and it varies from individual to individual. For instance, you cannot simply mask off a certain color and say that that is the image someone who suffers from the condition will perceive. Ishihara color test patterns illustrate the brain's ability to recognize patterns factors in.