c# - OpenGL texture+lightning+blending trouble -
i'm using opentk , there difficulty me understand concept of opengl enabling functions. perspective matrix in onresize function.
i trying show texture.
my render function:
gl.clearcolor(0.5f, 0.5f, 0.5f, 1.0f); gl.clear(clearbuffermask.colorbufferbit | clearbuffermask.depthbufferbit); gl.matrixmode(matrixmode.modelview); gl.loadidentity(); gl.enable(enablecap.texture2d); gl.enable(enablecap.depthtest); ground.draw();
my ground.draw() function(sizexz.z, sizexz.y constants):
gl.pushmatrix(); gl.translate(new vector3(-sizexz.x / 2, -1, sizexz.y / 2)); gl.bindtexture(texturetarget.texture2d, textures.gettextureid(texturename)); gl.begin(primitivetype.quads); gl.color3(1,1,1); gl.normal3(0, 1, 0); gl.texcoord2(1f, 1f); gl.vertex3(0, 0, 0); gl.texcoord2(1f, 0f); gl.vertex3(sizexz.x, 0, 0); gl.texcoord2(0f, 0f); gl.vertex3(sizexz.x, 0, -sizexz.y); gl.texcoord2(0f, 1f); gl.vertex3(0, 0, -sizexz.y); gl.end(); gl.popmatrix();
it shows black non-textured quad. when add light texture appears, disappears color of quads:
gl.bindtexture(texturetarget.texture2d, textures.gettextureid(texturename)); gl.begin(primitivetype.quads); gl.normal3(0, 0, 1); if (true) gl.color4(0,1,0,1); // appears background color, not green if (false) gl.texcoord2(1f, 0f); gl.vertex3(0, 0, 0); if (false) gl.texcoord2(1f, 1f); gl.vertex3(3f, 0, 0); if (false) gl.texcoord2(0f, 1f); gl.vertex3(3f, 3f, 0); if (false) gl.texcoord2(0f, 0f); gl.vertex3(0, 3f, 0); gl.color4(1, 1, 1, 1); gl.end();
there 2 problems in program:
1. usage of color3
looking @ opentk color3 documentation, notice there 2 overloads of function:
color3 (double red, double green, double blue) color3 (sbyte red, sbyte green, sbyte blue)
the reason why gl.color3(1,1,1) gives black object is, uses sbyte version values assumed in range [0, 255]. 1 dark. note gl.color3(1.0,1.0,1.0) calls double overload.
2. gl_texture_env_mode
by default set gl_modulate multiplies texture color vertex color. 1., makes texture disappear. more details on given here
Comments
Post a Comment