void ShaderParams::set_colour(const std::string& uniform_name, const Colour& values) { kmVec4 tmp; kmVec4Fill(&tmp, values.r, values.g, values.b, values.a); set_vec4(uniform_name, tmp); }
struct model_st *mdl_create_square_model(int xnum, int ynum, GLfloat lx, GLfloat by, GLfloat rx, GLfloat ty) { struct model_st *tmp; tmp = mdl_new_model(1); tmp->name = strdup("checker_model"); int vcount = 6 * xnum * ynum; GLfloat dx = 1.0f / xnum; GLfloat dy = 1.0f / ynum; GLfloat(*vertices)[4] = (GLfloat(*)[4]) malloc(sizeof(GLfloat) * 4 * vcount); GLfloat(*tcoords)[2] = (GLfloat(*)[2]) malloc(sizeof(GLfloat) * 2 * vcount); GLfloat(*normals)[3] = (GLfloat(*)[3]) malloc(sizeof(GLfloat) * 3 * vcount); int k = 0; for (int i = 0; i < xnum; i++) { for (int j = 0; j < ynum; j++) { set_vec4(i * dx, j * dy, 0.0, 1.0, vertices[k]); set_vec4((i + 1) * dx, j * dy, 0.0, 1.0, vertices[k + 1]); set_vec4(i * dx, (j + 1) * dy, 0.0, 1.0, vertices[k + 2]); set_vec4(i * dx, (j + 1) * dy, 0.0, 1.0, vertices[k + 3]); set_vec4((i + 1) * dx, j * dy, 0.0, 1.0, vertices[k + 4]); set_vec4((i + 1) * dx, (j + 1) * dy, 0.0, 1.0, vertices[k + 5]); set_vec2(lx, by, tcoords[k]); set_vec2(rx, by, tcoords[k + 1]); set_vec2(lx, ty, tcoords[k + 2]); set_vec2(lx, ty, tcoords[k + 3]); set_vec2(rx, by, tcoords[k + 4]); set_vec2(rx, ty, tcoords[k + 5]); set_vec3(0.0, 0.0, 1.0, normals[k]); set_vec3(0.0, 0.0, 1.0, normals[k + 1]); set_vec3(0.0, 0.0, 1.0, normals[k + 2]); set_vec3(0.0, 0.0, 1.0, normals[k + 3]); set_vec3(0.0, 0.0, 1.0, normals[k + 4]); set_vec3(0.0, 0.0, 1.0, normals[k + 5]); k += 6; } } tmp->vcount = vcount; tmp->vertices = (GLfloat *) vertices; tmp->tcoords = (GLfloat *) tcoords; tmp->normals = (GLfloat *) normals; tmp->draw_mode = GL_TRIANGLES; for (int i = 0; i < vcount; i++) DBG_TRACE(0, "V[%d] = %f %f %f %f\n", i, tmp->vertices[4 * i + 0], tmp->vertices[4 * i + 1], tmp->vertices[4 * i + 2], tmp->vertices[4 * i + 3]); return tmp; }