Vertex:

#version 120

void main() {
	gl_TexCoord[0] = gl_MultiTexCoord0;
	gl_Position = ftransform();
}

Fragment:

#version 120

uniform sampler2D tex;

void main(){
    vec4 texSlmp = texture2D(tex, gl_TexCoord[0].st);
    gl_FragColor = vec4(texSlmp.r, texSlmp.g, texSlmp.b, 1.0);
}

All I get with this is a black screen.

I cannot seem to get tutorials for anything older than OpenGL 3.3, and for my usecase, I could go lower, except everyone tells me “OpenGL is obsolete, try Vulkan instead”.

gl_TexCoord[0] seem to be all zeros if I modify the fragment shader to try to output gl_TexCoord[0].st, so its content would be displayed as color information, which I did for a different test. Also I can’t find anything on how do I “pass” textures (or other values) to the shaders in the official docs, nor any of the tutorials I could find explains how that actually works.

EDIT: Target version is OpenGL 2.1/GLSL 1.20

EDIT2: I updated the shaders to GLSL 3.30, but then my DuckDuckGo search results suddenly turned bad about the subject, and in/out still doesn’t work between vertex and fragment shaders (values taken from the vertex shader is all zero).

  • refalo
    link
    fedilink
    arrow-up
    1
    ·
    edit-2
    1 month ago

    I’m curious why you want to target 2.1 specifically? A lot of drivers these days don’t go below 3.x

    And just changing the shader to #version 330 often isn’t enough, that’s why we need to see your setup code either way.

    Preferably a minimally reproducible example project that we can build and test to be able to tell you exactly what’s wrong with your code.

    • ZILtoid1991@lemmy.worldOP
      link
      fedilink
      arrow-up
      1
      ·
      1 month ago

      Okay, I’ve changed things around, it seems there was a typo, I fixed it, now I’m getting access violation errors from nvoglv64.dll.