Хотите преобразовать OpenGL 1.1 в OpenGL 2.0.Преобразование OpenGL 1.1 в OpenGL 2.0
Я использую cocos2d v2.0 (фреймворк для создания 2D-игр)
Хотите преобразовать OpenGL 1.1 в OpenGL 2.0.Преобразование OpenGL 1.1 в OpenGL 2.0
Я использую cocos2d v2.0 (фреймворк для создания 2D-игр)
Сначала вы должны получить ваши шейдеры в вашей программе. Вы можете скопировать шейдерный код прямо в const char *, как показано ниже, или вы можете загрузить шейдер во время выполнения из файла, который зависит от того, на каких платформах вы разрабатываете, поэтому я не буду показывать, как это сделать.
const char *vertexShader = "... Vertex Shader source ...";
const char *fragmentShader = "... Fragment Shader source ...";
Создание шейдеров как для вершинных шейдеров и пиксельного шейдера и хранить их идентификаторы:
GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER);
GLuint fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
Здесь вы заполняете вы только что создали с вами либо данные шейдерами копии вставить в сопзЬ символ * или загружается из файла:
glShaderSource(vertexShader, 1, &vertexShader, NULL);
glShaderSource(fragmentShader, 1, &fragmentShader, NULL);
Тогда вы говорите программу компилировать вам шейдеры:
glCompileShader(vertexShader);
glCompileShader(fragmentShader);
Создать программу шейдера, который является интерфейсом для ваших шейдеров с OpenGL:
shaderProgram = glCreateProgram();
Приложите свои шейдеры программы шейдера:
glAttachShader(shaderProgram, vertexShader);
glAttachShader(shaderProgram, fragmentShader);
Ссылка программа шейдера в программу:
glLinkProgram(shaderProgram);
Сообщите OpenGL, что вы хотите использовать созданную шейдерную программу:
glUseProgram(shaderProgram);
Vertex Shader:
attribute vec4 a_Position; // Attribute is data send with each vertex. Position
attribute vec2 a_TexCoord; // and texture coordinates is the example here
uniform mat4 u_ModelViewProjMatrix; // This is sent from within your program
varying mediump vec2 v_TexCoord; // varying means it is passed to next shader
void main()
{
// Multiply the model view projection matrix with the vertex position
gl_Position = u_ModelViewProjMatrix* a_Position;
v_TexCoord = a_TexCoord; // Send texture coordinate data to fragment shader.
}
Фрагмент Shader:
precision mediump float; // Mandatory OpenGL ES float precision
varying vec2 v_TexCoord; // Sent in from Vertex Shader
uniform sampler2D u_Texture; // The texture to use sent from within your program.
void main()
{
// The pixel colors are set to the texture according to texture coordinates.
gl_FragColor = texture2D(u_Texture, v_TexCoord);
}
Вы должны связать шейдер дроу что-то. Без шейдера ничего не будет. –