+
+ GLuint fragShader = glCreateShader(GL_FRAGMENT_SHADER);
+ glShaderSource(fragShader, 1,
+ new const char*[1] { fragShaderSrc },
+ new const GLint[1] { (GLint)strlen(fragShaderSrc) });
+ glCompileShader(fragShader);
+
+ GLuint program = glCreateProgram();
+ glAttachShader(program, vertShader);
+ glAttachShader(program, fragShader);
+ glLinkProgram(program);
+ glUseProgram(program);
+
+ GLuint vertPosBuffer;
+ glGenBuffers(1, &vertPosBuffer);
+ glBindBuffer(GL_ARRAY_BUFFER, vertPosBuffer);
+ std::vector<float> vertPositions = {
+ 0, 1, 0,
+ 1, -1, 0,
+ -1, -1, 0
+ };
+ glBufferData(GL_ARRAY_BUFFER, vertPositions.size(), vertPositions.data(), GL_STATIC_DRAW);
+
+ GLuint vertPosLoc = glGetAttribLocation(program, "vertPos");
+ glEnableVertexAttribArray(vertPosLoc);
+ glVertexAttribPointer(vertPosLoc, 3, GL_FLOAT, false, 0, 0);