c++ - OpenGL Missing Triangles Diffuse Shader -
i'm using c++ , when implemented diffuse shader, causes every other triangle disappear. 

i can post render code if need be, believe issue normal matrix (which wrote transpose inverse of model view matrix). here shader code sort of similar of tutorial on lighthouse tutorials. vertex shader
#version 330 layout(location=0) in vec3 position; layout(location=1) in vec3 normal; uniform mat4 transform_matrix; uniform mat4 view_model_matrix; uniform mat4 normal_matrix; uniform vec3 light_pos; out vec3 light_intensity; void main() { vec3 tnorm = normalize(normal_matrix * vec4(normal, 1.0)).xyz; vec4 eye_coords = transform_matrix * vec4(position, 1.0); vec3 s = normalize(vec3(light_pos - eye_coords.xyz)).xyz; vec3 light_set_intensity = vec3(1.0, 1.0, 1.0); vec3 diffuse_color = vec3(0.5, 0.5, 0.5); light_intensity = light_set_intensity * diffuse_color * max(dot(s, tnorm), 0.0); gl_position = transform_matrix * vec4(position, 1.0); } my fragment shader outputs "light_intensity" in form of color. model straight blender , have tried different exporting options keeping vertex order, nothing has worked.
this not related shader.
it appears depth test related. here, order of triangles in depth relative viewport messed up, because not make sure nearest pixel camera gets drawn.
enable depth testing , make sure have z buffer bound render target. read more here: http://www.opengl.org/wiki/depth_test

only triangles highlighted in red should visible viewer. due lack of valid depth test, there no chance guarantee, triangle painted top most. blue triangles of faces should not visible cover parts of drawn red triangles.
the depth test omit this, comparing depth in z buffer depth of pixel drawn @ current moment. color information of pixel closer viewer, i.e. has smaller z value z value in buffer, shall written framebuffer in order achieve correct result.
(backface culling, nice and, if model correctly exported, allow show correctly. hide main problem, not solve it.)
Comments
Post a Comment