1 #include <GLES3/gl32.h>
5 const char* vertShaderSrc = R"(
6 attribute vec4 vertPos;
12 const char *fragShaderSrc = R"(
14 gl_FragColor = vec4(1, 0, 1, 1);
18 extern "C" void setup() {
19 GLuint vertShader = glCreateShader(GL_VERTEX_SHADER);
20 const char* sources[1] = { vertShaderSrc };
21 const GLint lengths[1] = { (GLint)strlen(vertShaderSrc) };
22 glShaderSource(vertShader, 1, sources, lengths);
23 glCompileShader(vertShader);
25 GLuint fragShader = glCreateShader(GL_FRAGMENT_SHADER);
26 glShaderSource(fragShader, 1,
27 new const char*[1] { fragShaderSrc },
28 new const GLint[1] { (GLint)strlen(fragShaderSrc) });
29 glCompileShader(fragShader);
31 GLuint program = glCreateProgram();
32 glAttachShader(program, vertShader);
33 glAttachShader(program, fragShader);
34 glLinkProgram(program);
35 glUseProgram(program);
38 glGenBuffers(1, &vertPosBuffer);
39 glBindBuffer(GL_ARRAY_BUFFER, vertPosBuffer);
40 std::vector<float> vertPositions = {
45 glBufferData(GL_ARRAY_BUFFER, vertPositions.size(), vertPositions.data(), GL_STATIC_DRAW);
47 GLuint vertPosLoc = glGetAttribLocation(program, "vertPos");
48 glEnableVertexAttribArray(vertPosLoc);
49 glVertexAttribPointer(vertPosLoc, 3, GL_FLOAT, false, 0, 0);