Пока что 2 вопроса

:
1) Когда передаёш текстуру шейдеру (в uniform переменную) передаётся ссылка на неё, или её копия?
2)Вот такой код рисует затекстуреный квадрат:
Пишу на java с исползованием lwjgl и загрущиком текстуры slick-util (хотя это не важно)
texture.bind(); // == glBindTexture(GL_TEXTURE_2D, texture.getTextureID());
glBegin(GL11.GL_QUADS);
glTexCoord2f(0,0);
glVertex3f(-1,1,-10);
glTexCoord2f(1,0);
glVertex3f(1,1,-10);
glTexCoord2f(1,1);
glVertex3f(1,-1,-10);
glTexCoord2f(0,1);
glVertex3f(-1,-1,-10);
glEnd();
а вот если заюзать шейдер, то текстура не рисуется:
shader.begin();
texture.bind(); // == glBindTexture(GL_TEXTURE_2D, texture.getTextureID());
glBegin(GL11.GL_QUADS);
glTexCoord2f(0,0);
glVertex3f(-1,1,-10);
glTexCoord2f(1,0);
glVertex3f(1,1,-10);
glTexCoord2f(1,1);
glVertex3f(1,-1,-10);
glTexCoord2f(0,1);
glVertex3f(-1,-1,-10);
glEnd();
shader.end();
Код вершиного шейдера:
void main(){
gl_FrontColor = gl_Color;
gl_Position = ftransform();
}
и пиксельного
void main(){
gl_FragColor = gl_Color;
}
shader является экземпляром моего класса Shader, вот навсякий случай его код (он рабочий)

package mygame;
import java.io.BufferedReader;
import java.io.FileReader;
import org.lwjgl.opengl.ARBFragmentShader;
import org.lwjgl.opengl.ARBShaderObjects;
import org.lwjgl.opengl.ARBVertexShader;
public class Shader {
private String vertShaderFileName, fragShaderFileName;
private int shader = 0, vertShader = 0, fragShader = 0;
private boolean useShader=true;
public Shader(String vertShaderFileName, String fragShaderFileName) {
this.vertShaderFileName = vertShaderFileName;
this.fragShaderFileName = fragShaderFileName;
init();
}
public void setVariable(String nameVariable, float variable) {
if(useShader)
ARBShaderObjects.glUniform1fARB(findVariable(nameVariable), variable);
}
public void setVariable(String nameVariable, int variable) {
if(useShader)
ARBShaderObjects.glUniform1iARB(findVariable(nameVariable), variable);
}
public void setVariable(String nameVariable, float variable1, float variable2) {
if(useShader)
ARBShaderObjects.glUniform2fARB(findVariable(nameVariable), variable1, variable2);
}
public void begin() {
if(useShader)
ARBShaderObjects.glUseProgramObjectARB(shader);
}
public void end() {
ARBShaderObjects.glUseProgramObjectARB(0);
}
private int findVariable(String nameVariable) {
return ARBShaderObjects.glGetUniformLocationARB(shader, nameVariable);
}
private void init() {
shader=ARBShaderObjects.glCreateProgramObjectARB();
if(shader!=0){
vertShader=createVertShader(vertShaderFileName);
fragShader=createFragShader(fragShaderFileName);
}
else useShader=false;
if(vertShader !=0 && fragShader !=0){
ARBShaderObjects.glAttachObjectARB(shader, vertShader);
ARBShaderObjects.glAttachObjectARB(shader, fragShader);
ARBShaderObjects.glLinkProgramARB(shader);
ARBShaderObjects.glValidateProgramARB(shader);
}else useShader=false;
}
private int createVertShader(String filename){
vertShader=ARBShaderObjects.glCreateShaderObjectARB(ARBVertexShader.GL_VERTEX_SHADER_ARB);
if(vertShader==0){return 0;}
String vertexCode="";
String line;
try{
BufferedReader reader=new BufferedReader(new FileReader(filename));
while((line=reader.readLine())!=null){
vertexCode+=line + "\n";
}
}catch(Exception e){
System.out.println("Fail reading vertex shading code");
return 0;
}
ARBShaderObjects.glShaderSourceARB(vertShader, vertexCode);
ARBShaderObjects.glCompileShaderARB(vertShader);
return vertShader;
}
private int createFragShader(String filename){
fragShader=ARBShaderObjects.glCreateShaderObjectARB(ARBFragmentShader.GL_FRAGMENT_SHADER_ARB);
if(fragShader==0){return 0;}
String fragCode="";
String line;
try{
BufferedReader reader=new BufferedReader(new FileReader(filename));
while((line=reader.readLine())!=null){
fragCode+=line + "\n";
}
}catch(Exception e){
System.out.println("Fail reading fragment shading code");
return 0;
}
ARBShaderObjects.glShaderSourceARB(fragShader, fragCode);
ARBShaderObjects.glCompileShaderARB(fragShader);
return fragShader;
}
}
Поидее надо в шейдере что то добавить, типо texture2D, но я повсякому пробывал, не получается
