16 1.0f, 1.0f, 1.0f, 0.0f,
17 -1.0f, 1.0f, 0.0f, 0.0f,
18 -1.0f, -1.0f, 0.0f, 1.0f,
20 1.0f, 1.0f, 1.0f, 0.0f,
21 -1.0f, -1.0f, 0.0f, 1.0f,
22 1.0f, -1.0f, 1.0f, 1.0f
50static void compileShader(GLuint shaderId, QOpenGLFunctions_3_3_Core *f){
51 f->glCompileShader(shaderId);
56 f->glGetShaderiv(shaderId, GL_COMPILE_STATUS, &ret);
57 f->glGetShaderiv(shaderId, GL_INFO_LOG_LENGTH, &
len);
59 std::vector<char> errorMsg(
len+1);
60 f->glGetShaderInfoLog(shaderId,
len, NULL, &errorMsg[0]);
61 printf(
"%s\n", errorMsg.data());
67 255, 0, 0, 0, 255, 0, 0, 0, 255, 255, 255, 255,
68 255, 0, 0, 0, 255, 0, 0, 0, 255, 255, 255, 255,
69 255, 0, 0, 0, 255, 0, 0, 0, 255, 255, 255, 255,
70 255, 0, 0, 0, 255, 0, 0, 0, 255, 255, 255, 255
104 QMessageBox warningBox(
this);
105 warningBox.setText(
"OpenGL 3.3 is required!");
113 f->glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
115 f->glDisable(GL_DEPTH_TEST);
116 f->glDisable(GL_SCISSOR_TEST);
117 f->glDisable(GL_STENCIL_TEST);
119 GLuint vertexShader = f->glCreateShader(GL_VERTEX_SHADER);
120 GLuint fragShader = f->glCreateShader(GL_FRAGMENT_SHADER);
122 f->glShaderSource(vertexShader, 1, &
vert_src, NULL);
124 f->glShaderSource(fragShader, 1, &
frag_src, NULL);
127 program = f->glCreateProgram();
128 f->glAttachShader(
program, vertexShader);
129 f->glAttachShader(
program, fragShader);
133 f->glDetachShader(
program, vertexShader);
134 f->glDetachShader(
program, fragShader);
135 f->glDeleteShader(vertexShader);
136 f->glDeleteShader(fragShader);
140 f->glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 4, 4, 0, GL_RGB, GL_UNSIGNED_BYTE,
pixels);
141 f->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
142 f->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
146 f->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
147 f->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
148 f->glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
150 f->glBindTexture(GL_TEXTURE_2D, 0);
156 f->glEnableVertexAttribArray(0);
157 f->glVertexAttribPointer(
165 f->glEnableVertexAttribArray(1);
166 f->glVertexAttribPointer(
172 (
void*)(2 *
sizeof(
float))
175 f->glBindBuffer(GL_ARRAY_BUFFER, 0);
268 static __thread
char temp_dir[MAX_PATH + 1];
269 if (GetTempPathA(
sizeof temp_dir, temp_dir) == 0) {
273 static __thread
char temp_dir[PATH_MAX];
274 if (
char *req_tmp_dir = getenv(
"TMPDIR")) {
275 temp_dir[
sizeof temp_dir - 1] =
'\0';
276 strncpy(temp_dir, req_tmp_dir,
sizeof temp_dir - 1);
278 strcpy(temp_dir, P_tmpdir);
280 strncat(temp_dir,
"/",
sizeof temp_dir - strlen(temp_dir) - 1);