Jump to content
  • Advertisement
Sign in to follow this  
addiem7c5

OpenGL Texturing Problem using OpenTK/OpenGL 3.3

This topic is 2121 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I am having troubles getting texturing working in my OpenTK/OpenGL 3.3 code. I am sure it is something simple that I am missing, but I just can't seem to get a texture on the square I am rendering. (I'm writing a rendering framework for a game).

The relevant code pieces are:

//setup Texcoord array.
GL.BindBuffer(BufferTarget.ArrayBuffer, VertexBufferObject[2]);
GL.BufferData<float>(BufferTarget.ArrayBuffer, (IntPtr)(sizeof(float) * texcoord_information.Count), texcoord_information.ToArray(), BufferUsageHint.StaticDraw);
GL.EnableVertexAttribArray(2);
GL.VertexAttribPointer(2, 2, VertexAttribPointerType.Float, false, 0, 0);
GL.BindBuffer(BufferTarget.ArrayBuffer, 0);
//Set up our textures
for(int i = 0; i < Textures.Count; i++)
{
    Console.WriteLine("Preparing texture.");
    Uniform_To_Texture[GL.GetUniformLocation(Shader.GetProgram(), "diffuse")] = Textures[i];
}
//Render

int texture_unit = 0;
foreach (KeyValuePair<int, ITexture> kvp in Uniform_To_Texture)
{
    GL.Uniform1(kvp.Key, texture_unit);
    GL.ActiveTexture(TextureUnit.Texture0 + texture_unit);
    GL.BindTexture(TextureTarget.Texture2D, kvp.Value.GetTextureHandle());
    texture_unit++;
}
if (!GL.IsVertexArray(VertexArrayObject))
    throw new OpenGLException("Vertex Array Object not set up correctly, cannot render!");
GL.BindVertexArray(VertexArrayObject);
GL.DrawArrays(BeginMode.Triangles, 0, Vertices.Count);
GL.BindVertexArray(0);

 

Then the vertex and fragment shaders are:

//Vertex shader
#version 330
uniform mat4 viewmatrix, projmatrix, transformmatrix;

in vec3 position;
in vec3 normal;
in vec2 texcoord;

varying vec2 texturecoord;

void main()
{
    texturecoord = texcoord;
    gl_Position = projmatrix * viewmatrix * transformmatrix * vec4(position, 1.0) ;
}

//Fragment Shader
#version 330
uniform sampler2D diffuse;
varying vec2 texturecoord;

out vec4 color;
void main(void)
{
    color = texture2D(diffuse, texturecoord);
}

 

The square I am rendering is just coming up white, if that helps any. 

Share this post


Link to post
Share on other sites
Advertisement
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!