void generateCube(Cube *parentCube, enum Move_e thisMove) { Cube *thisCube; #ifndef NDEBUG printMoveSequence(parentCube); debug(", %d\n", thisMove); #endif if (thisMove == -1) { debug("cube is root\n"); thisCube = parentCube; goto justmove; } //alloc space for new cube //thisCube = GlobalAlloc(0, sizeof(Cube)); thisCube = malloc(sizeof(Cube)); //generate new cube //CopyMemory(thisCube, parentCube, sizeof(Cube)); memcpy(thisCube, parentCube, sizeof(Cube)); thisCube->depth = parentCube->depth + 1; moveCube(parentCube, thisCube, thisMove); //check cube validity debug("validating cube\n"); if (!validateCube(&rootCube, thisCube)) { //GlobalFree(thisCube); free(thisCube); return; } //take action and set handles //ZeroMemory(&thisCube->nextMove, sizeof(thisCube->nextMove)); memset(&thisCube->nextMove, '\0', sizeof(thisCube->nextMove)); thisCube->parent = parentCube; thisCube->lastMove = thisMove; parentCube->nextMove[thisMove] = thisCube; //make additional moves if appropriate justmove: debug("checking if cube is solution\n"); if (compareCube(thisCube, &solvedCube)) { printf("cube matched solution\n"); printMoveSequence(thisCube); printf("\n"); printCube(thisCube); pause(); return; } //if (thisCube->depth >= g_uMaxDepth) return; int m; for (m=0; m<UNIQUE_MOVES; m++) { generateCube(thisCube, m); } return; }
void prepare() { VulkanExampleBase::prepare(); generateCube(); setupVertexDescriptions(); prepareUniformBuffers(); setupDescriptorSetLayout(); preparePipelines(); setupDescriptorPool(); setupDescriptorSet(); buildCommandBuffers(); prepared = true; }
void generateCube(struct Cube_t *parentCube, enum Move_e thisMove) { struct Cube_t *thisCube; DEBUG printMoveSequence(parentCube); DEBUG printf(", %d\n", thisMove); if (thisMove == -1) { DEBUG printf("cube is root\n"); thisCube = parentCube; goto justmove; } //alloc space for new cube thisCube = GlobalAlloc(0, sizeof(struct Cube_t)); //generate new cube CopyMemory(thisCube, parentCube, sizeof(struct Cube_t)); thisCube->depth = parentCube->depth + 1; moveCube(parentCube, thisCube, thisMove); //check cube validity DEBUG printf("validating cube\n"); if (!validateCube(&rootCube, thisCube)) { GlobalFree(thisCube); return; } //take action and set handles ZeroMemory(&thisCube->nextMove, sizeof(thisCube->nextMove)); thisCube->parent = parentCube; thisCube->lastMove = thisMove; parentCube->nextMove[thisMove] = thisCube; //make additional moves if appropriate justmove: DEBUG printf("checking if cube is solution\n"); if (compareCube(thisCube, &solvedCube)) { printf("cube matched solution\n"); printMoveSequence(thisCube); printf("\n"); printCube(thisCube); pause(); return; } if (thisCube->depth >= g_uMaxDepth) return; int m; for (m=0;m<UNIQUE_MOVES;m++) { generateCube(thisCube, m); } return; }
SkyCube::SkyCube(GLuint program) : myDrawable(program) { /* Initialize skycube */ model = generateCube(10.0f); // Creating cubemap texture glGenTextures(1, &textureID); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_CUBE_MAP, textureID); TextureData texture1; memset(&texture1, 0, sizeof(texture1)); TextureData texture2; memset(&texture2, 0, sizeof(texture2)); TextureData texture3; memset(&texture3, 0, sizeof(texture3)); TextureData texture4; memset(&texture4, 0, sizeof(texture4)); TextureData texture5; memset(&texture5, 0, sizeof(texture5)); TextureData texture6; memset(&texture6, 0, sizeof(texture6)); LoadTGATextureData("resources/Skycube/Xn.tga", &texture1); LoadTGATextureData("resources/Skycube/Xp.tga", &texture2); LoadTGATextureData("resources/Skycube/Yn.tga", &texture3); LoadTGATextureData("resources/Skycube/Yp.tga", &texture4); LoadTGATextureData("resources/Skycube/Zn.tga", &texture5); LoadTGATextureData("resources/Skycube/Zp.tga", &texture6); glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, texture1.width, texture1.height, 0, GL_RGB, GL_UNSIGNED_BYTE, texture1.imageData); glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, texture2.width, texture2.height, 0, GL_RGB, GL_UNSIGNED_BYTE, texture2.imageData); glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, texture3.width, texture3.height, 0, GL_RGB, GL_UNSIGNED_BYTE, texture3.imageData); glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, texture4.width, texture4.height, 0, GL_RGB, GL_UNSIGNED_BYTE, texture4.imageData); glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, texture5.width, texture5.height, 0, GL_RGB, GL_UNSIGNED_BYTE, texture5.imageData); glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, texture6.width, texture6.height, 0, GL_RGB, GL_UNSIGNED_BYTE, texture6.imageData); glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); }
void init() { /*select clearing (background) color*/ glClearColor(0.0, 0.0, 0.0, 0.0); //populate our arrays generateCube(); // Load shaders and use the resulting shader program GLuint program = InitShader( "vshader-transform.glsl", "fshader-transform.glsl" ); glUseProgram( program ); // Create a vertex array object glGenVertexArrays( 1, &vao[0] ); // Create and initialize any buffer objects glBindVertexArray( vao[0] ); glGenBuffers( 2, &vbo[0] ); glBindBuffer( GL_ARRAY_BUFFER, vbo[0] ); glBufferData( GL_ARRAY_BUFFER, sizeof(cubeVerts), cubeVerts, GL_STATIC_DRAW); // notice that since position is unique for every vertex, we treat it as an // attribute instead of a uniform vPosition = glGetAttribLocation(program, "vPosition"); glEnableVertexAttribArray(vPosition); glVertexAttribPointer(vPosition, 4, GL_FLOAT, GL_FALSE, 0, 0); //and now our colors for each vertex glBindBuffer( GL_ARRAY_BUFFER, vbo[1] ); glBufferData( GL_ARRAY_BUFFER, sizeof(cubeColors), cubeColors, GL_STATIC_DRAW ); vColor = glGetAttribLocation(program, "vColor"); glEnableVertexAttribArray(vColor); glVertexAttribPointer(vColor, 4, GL_FLOAT, GL_FALSE, 0, 0); //grab pointers for our modelview and perspecive uniform matrices model_view = glGetUniformLocation(program, "model_view"); projection = glGetUniformLocation(program, "projection"); //Only draw the things in the front layer glEnable(GL_DEPTH_TEST); }
// Performs most of the OpenGL intialization -- change these with care, if you must. void myinit(void) { #ifndef EMSCRIPTEN GLuint program = InitShader( "../my code/vshader.glsl", "../my code/fshader.glsl" ); // Load shaders and use the resulting shader program #else GLuint program = InitShader( "vshader.glsl", "fshader.glsl" ); // Load shaders and use the resulting shader program #endif glUseProgram(program); // Generate vertex arrays for geometric shapes generateCube(program, &cubeData); generateSphere(program, &sphereData); generateCone(program, &coneData); generateCylinder(program, &cylData); uModelView = glGetUniformLocation( program, "ModelView" ); uProjection = glGetUniformLocation( program, "Projection" ); uView = glGetUniformLocation( program, "View" ); glClearColor( 0.1, 0.1, 0.2, 1.0 ); // dark blue background uAmbient = glGetUniformLocation( program, "AmbientProduct" ); uDiffuse = glGetUniformLocation( program, "DiffuseProduct" ); uSpecular = glGetUniformLocation( program, "SpecularProduct" ); uLightPos = glGetUniformLocation( program, "LightPosition" ); uShininess = glGetUniformLocation( program, "Shininess" ); uTex = glGetUniformLocation( program, "Tex" ); uEnableTex = glGetUniformLocation( program, "EnableTex" ); glUniform4f(uAmbient, 0.2f, 0.2f, 0.2f, 1.0f); glUniform4f(uDiffuse, 0.6f, 0.6f, 0.6f, 1.0f); glUniform4f(uSpecular, 0.2f, 0.2f, 0.2f, 1.0f); glUniform4f(uLightPos, 15.0f, 15.0f, 30.0f, 0.0f); glUniform1f(uShininess, 100.0f); glEnable(GL_DEPTH_TEST); Arcball = new BallData; Ball_Init(Arcball); Ball_Place(Arcball,qOne,0.75); }
void CloudsVisualSystemCities::makeGrid(float _size, int _resolution) { size = _size; resolution = _resolution; blockSize = size/resolution; // Noise Texture // int textureSize = resolution*2; noiseFbo.allocate(textureSize,textureSize); noiseFbo.begin(); ofClear(0); noiseFbo.end(); // Grayscott PingPong // for(int i = 0; i < 2; i++){ grayscottFbo[i].allocate(textureSize, textureSize); grayscottFbo[i].begin(); ofClear(0); grayscottFbo[i].end(); } // Mask FBO // maskFbo.allocate(textureSize, textureSize); maskFbo.begin(); ofClear(0); maskFbo.end(); // Generate Blocks // cube = glGenLists(1); float cubeSize = blockSize*0.5; glNewList(cube, GL_COMPILE); generateCube(cubeSize, cubeSize, cubeSize); glEndList(); }
void ColorOcTreeDrawer::setOcTree(const AbstractOcTree& tree_pnt, const octomap::pose6d& origin_, int map_id_) { const ColorOcTree& tree = ((const ColorOcTree&) tree_pnt); this->map_id = map_id_; // save origin used during cube generation this->initial_origin = octomap::pose6d(octomap::point3d(0,0,0), origin_.rot()); // origin is in global coords this->origin = origin_; // maximum size to prevent crashes on large maps: (should be checked in a better way than a constant) bool showAll = (tree.size() < 5 * 1e6); bool uses_origin = ( (origin_.rot().x() != 0.) && (origin_.rot().y() != 0.) && (origin_.rot().z() != 0.) && (origin_.rot().u() != 1.) ); // walk the tree one to find the number of nodes in each category // (this is used to set up the OpenGL arrays) // TODO: this step may be left out, if we maintained the GLArrays in std::vectors instead... unsigned int cnt_occupied(0), cnt_occupied_thres(0), cnt_free(0), cnt_free_thres(0); for(ColorOcTree::tree_iterator it = tree.begin_tree(this->m_max_tree_depth), end=tree.end_tree(); it!= end; ++it) { if (it.isLeaf()) { if (tree.isNodeOccupied(*it)){ // occupied voxels if (tree.isNodeAtThreshold(*it)) ++cnt_occupied_thres; else ++cnt_occupied; } else if (showAll) { // freespace voxels if (tree.isNodeAtThreshold(*it)) ++cnt_free_thres; else ++cnt_free; } } } // setup GL arrays for cube quads and cube colors initGLArrays(cnt_occupied , m_occupiedSize , &m_occupiedArray , &m_occupiedColorArray); initGLArrays(cnt_occupied_thres, m_occupiedThresSize, &m_occupiedThresArray, &m_occupiedThresColorArray); initGLArrays(cnt_free , m_freeSize , &m_freeArray, NULL); initGLArrays(cnt_free_thres , m_freeThresSize , &m_freeThresArray, NULL); std::vector<octomath::Vector3> cube_template; initCubeTemplate(origin, cube_template); unsigned int idx_occupied(0), idx_occupied_thres(0), idx_free(0), idx_free_thres(0); unsigned int color_idx_occupied(0), color_idx_occupied_thres(0); m_grid_voxels.clear(); OcTreeVolume voxel; // current voxel, possibly transformed for(ColorOcTree::tree_iterator it = tree.begin_tree(this->m_max_tree_depth), end=tree.end_tree(); it!= end; ++it) { if (it.isLeaf()) { // voxels for leaf nodes if (uses_origin) voxel = OcTreeVolume(origin.rot().rotate(it.getCoordinate()), it.getSize()); else voxel = OcTreeVolume(it.getCoordinate(), it.getSize()); if (tree.isNodeOccupied(*it)){ // occupied voxels if (tree.isNodeAtThreshold(*it)) { idx_occupied_thres = generateCube(voxel, cube_template, idx_occupied_thres, &m_occupiedThresArray); color_idx_occupied_thres = setCubeColorRGBA(it->getColor().r, it->getColor().g, it->getColor().b, (unsigned char) (it->getOccupancy() * 255.), color_idx_occupied_thres, &m_occupiedThresColorArray); } else { idx_occupied = generateCube(voxel, cube_template, idx_occupied, &m_occupiedArray); color_idx_occupied = setCubeColorRGBA(it->getColor().r, it->getColor().g, it->getColor().b, (unsigned char)(it->getOccupancy() * 255.), color_idx_occupied, &m_occupiedColorArray); } } else if (showAll) { // freespace voxels if (tree.isNodeAtThreshold(*it)) { idx_free_thres = generateCube(voxel, cube_template, idx_free_thres, &m_freeThresArray); } else { idx_free = generateCube(voxel, cube_template, idx_free, &m_freeArray); } } // grid structure voxel if (showAll) m_grid_voxels.push_back(voxel); } else { // inner node voxels (for grid structure only) if (showAll) { if (uses_origin) voxel = OcTreeVolume(origin.rot().rotate(it.getCoordinate()), it.getSize()); else voxel = OcTreeVolume(it.getCoordinate(), it.getSize()); m_grid_voxels.push_back(voxel); } } } // end for all voxels m_octree_grid_vis_initialized = false; if(m_drawOcTreeGrid) initOctreeGridVis(); }
void myinit(void) { // Load shaders and use the resulting shader program GLuint program = InitShader( "vshader.glsl", "fshader.glsl" ); glUseProgram(program); // Generate vertex arrays for geometric shapes generateCube(program, &cubeData); generateCrate(program, &crateData); uModelView = glGetUniformLocation( program, "ModelView" ); uProjection = glGetUniformLocation( program, "Projection" ); uView = glGetUniformLocation( program, "View" ); glClearColor( 0.1, 0.1, 0.2, 1.0 ); // dark blue background uAmbient = glGetUniformLocation( program, "AmbientProduct" ); uDiffuse = glGetUniformLocation( program, "DiffuseProduct" ); uSpecular = glGetUniformLocation( program, "SpecularProduct" ); uLightPos = glGetUniformLocation( program, "LightPosition" ); uShininess = glGetUniformLocation( program, "Shininess" ); uTex = glGetUniformLocation( program, "Tex" ); uEnableTex = glGetUniformLocation( program, "EnableTex" ); glUniform4f(uAmbient, 0.2f, 0.2f, 0.2f, 1.0f); glUniform4f(uDiffuse, 0.6f, 0.6f, 0.6f, 1.0f); glUniform4f(uSpecular, 0.2f, 0.2f, 0.2f, 1.0f); glUniform4f(uLightPos, 15.0f, 15.0f, 30.0f, 0.0f); glUniform1f(uShininess, 100.0f); glEnable(GL_DEPTH_TEST); //Problem2: Load a tga file into a buffer. TgaImage cubeImage; if (!cubeImage.loadTGA("crate.tga")) { printf("Error loading image file\n"); exit(1); } TgaImage crateImage; if (!crateImage.loadTGA("crate.tga")) { printf("Error loading image file\n"); exit(1); } // Tri-linear filtering for problem 5 glGenTextures( 1, &texture_cube ); glBindTexture( GL_TEXTURE_2D, texture_cube ); glTexImage2D(GL_TEXTURE_2D, 0, 4, cubeImage.width, cubeImage.height, 0, (cubeImage.byteCount == 3) ? GL_BGR : GL_BGRA, GL_UNSIGNED_BYTE, cubeImage.data ); glGenerateMipmap(GL_TEXTURE_2D); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); // Nearest neighbor filtering for problem 5 glGenTextures( 1, &texture_crate ); glBindTexture( GL_TEXTURE_2D, texture_crate ); glTexImage2D(GL_TEXTURE_2D, 0, 4, crateImage.width, crateImage.height, 0, (crateImage.byteCount == 3) ? GL_BGR : GL_BGRA, GL_UNSIGNED_BYTE, crateImage.data ); glGenerateMipmap(GL_TEXTURE_2D); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); glUniform1i( uTex, 0); }
void myinit(void) { // Load shaders and use the resulting shader program GLuint program = InitShader( "vshader.glsl", "fshader.glsl" ); glUseProgram(program); // Generate vertex arrays for geometric shapes generateCube(program, &cubeData); generateSphere(program, &sphereData); generateCone(program, &coneData); generateCylinder(program, &cylData); generatePyramid(program, &pyramidData); uModelView = glGetUniformLocation( program, "ModelView" ); uProjection = glGetUniformLocation( program, "Projection" ); uView = glGetUniformLocation( program, "View" ); glClearColor( .1, .1, .6, 1.0 ); // dark blue background uAmbient = glGetUniformLocation( program, "AmbientProduct" ); uDiffuse = glGetUniformLocation( program, "DiffuseProduct" ); uSpecular = glGetUniformLocation( program, "SpecularProduct" ); uLightPos = glGetUniformLocation( program, "LightPosition" ); uShininess = glGetUniformLocation( program, "Shininess" ); uTex = glGetUniformLocation( program, "Tex" ); uEnableTex = glGetUniformLocation( program, "EnableTex" ); glUniform4f(uAmbient, 0.2f, 0.2f, 0.2f, 1.0f); glUniform4f(uDiffuse, 0.6f, 0.6f, 0.6f, 1.0f); glUniform4f(uSpecular, 0.2f, 0.2f, 0.2f, 1.0f); glUniform4f(uLightPos, 15.0f, 15.0f, 30.0f, 0.0f); glUniform1f(uShininess, 100.0f); glEnable(GL_DEPTH_TEST); TgaImage coolImage; if (!coolImage.loadTGA("dirt.tga")) { printf("Error loading image file\n"); exit(1); } TgaImage earthImage; if (!earthImage.loadTGA("earth.tga")) { printf("Error loading image file\n"); exit(1); } TgaImage roofImage; if (!roofImage.loadTGA("roof.tga")) { printf("Error loading image file\n"); exit(1); } TgaImage treeImage; if (!treeImage.loadTGA("tree.tga")) { printf("Error loading image file\n"); exit(1); } TgaImage skyImage; if (!skyImage.loadTGA("sky.tga")) { printf("Error loading image file\n"); exit(1); } TgaImage stoneImage; if (!stoneImage.loadTGA("stone.tga")) { printf("Error loading image file\n"); exit(1); } TgaImage leafImage; if (!leafImage.loadTGA("leaf.tga")) { printf("Error loading image file\n"); exit(1); } glGenTextures( 1, &texture_cube ); glBindTexture( GL_TEXTURE_2D, texture_cube ); glTexImage2D(GL_TEXTURE_2D, 0, 4, coolImage.width, coolImage.height, 0, (coolImage.byteCount == 3) ? GL_BGR : GL_BGRA, GL_UNSIGNED_BYTE, coolImage.data ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); glGenTextures( 1, &texture_earth ); glBindTexture( GL_TEXTURE_2D, texture_earth ); glTexImage2D(GL_TEXTURE_2D, 0, 4, earthImage.width, earthImage.height, 0, (earthImage.byteCount == 3) ? GL_BGR : GL_BGRA, GL_UNSIGNED_BYTE, earthImage.data ); //roof glGenTextures( 1, &texture_roof ); glBindTexture( GL_TEXTURE_2D, texture_roof ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); glTexImage2D(GL_TEXTURE_2D, 0, 4, roofImage.width, roofImage.height, 0, (roofImage.byteCount == 3) ? GL_BGR : GL_BGRA, GL_UNSIGNED_BYTE, roofImage.data ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); glGenTextures( 1, &texture_trees ); glBindTexture( GL_TEXTURE_2D, texture_trees ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); glTexImage2D(GL_TEXTURE_2D, 0, 4, treeImage.width, treeImage.height, 0, (treeImage.byteCount == 3) ? GL_BGR : GL_BGRA, GL_UNSIGNED_BYTE, treeImage.data ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); glGenTextures( 1, &texture_leaf ); glBindTexture( GL_TEXTURE_2D, texture_leaf ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); glTexImage2D(GL_TEXTURE_2D, 0, 4, leafImage.width, leafImage.height, 0, (leafImage.byteCount == 3) ? GL_BGR : GL_BGRA, GL_UNSIGNED_BYTE, leafImage.data ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); glGenTextures( 1, &texture_stone ); glBindTexture( GL_TEXTURE_2D, texture_stone ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); glTexImage2D(GL_TEXTURE_2D, 0, 4, stoneImage.width, stoneImage.height, 0, (stoneImage.byteCount == 3) ? GL_BGR : GL_BGRA, GL_UNSIGNED_BYTE, stoneImage.data ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); // Set texture sampler variable to texture unit 0 // (set in glActiveTexture(GL_TEXTURE0)) glUniform1i( uTex, 0); Arcball = new BallData; Ball_Init(Arcball); Ball_Place(Arcball,qOne,0.75); }
void initPrimitives(GLuint program) { generateCube ( program, &cubeData ); generateSphere ( program, &sphereData ); generateCone ( program, &coneData ); generateCylinder( program, &cylData ); }
void myinit(void) { // Load shaders and use the resulting shader program GLuint program = InitShader( "vshader.glsl", "fshader.glsl" ); glUseProgram(program); // Generate vertex arrays for geometric shapes generateGrass(program, &grassData); generateHeart(program, &heartData); generateCube(program, &cubeData); generateSphere(program, &sphereData); generateCone(program, &coneData); generateCylinder(program, &cylData); uModelView = glGetUniformLocation( program, "ModelView" ); uProjection = glGetUniformLocation( program, "Projection" ); uView = glGetUniformLocation( program, "View" ); glClearColor( 0.5, 0.5, 1.0, 1.0 ); // dark blue background uAmbient = glGetUniformLocation( program, "AmbientProduct" ); uDiffuse = glGetUniformLocation( program, "DiffuseProduct" ); uSpecular = glGetUniformLocation( program, "SpecularProduct" ); uLightPos = glGetUniformLocation( program, "LightPosition" ); uShininess = glGetUniformLocation( program, "Shininess" ); uTex = glGetUniformLocation( program, "Tex" ); uEnableTex = glGetUniformLocation( program, "EnableTex" ); glUniform4f(uAmbient, 0.2f, 0.2f, 0.2f, 1.0f); glUniform4f(uDiffuse, 0.6f, 0.6f, 0.6f, 1.0f); glUniform4f(uSpecular, 0.2f, 0.2f, 0.2f, 1.0f); glUniform4f(uLightPos, 15.0f, 15.0f, 30.0f, 0.0f); glUniform1f(uShininess, 100.0f); glEnable(GL_DEPTH_TEST); TgaImage coolImage; if (!coolImage.loadTGA("challenge.tga")) { printf("Error loading image file\n"); exit(1); } GLuint texture; glGenTextures( 1, &texture ); glBindTexture( GL_TEXTURE_2D, texture ); glTexImage2D(GL_TEXTURE_2D, 0, 4, coolImage.width, coolImage.height, 0, (coolImage.byteCount == 3) ? GL_BGR : GL_BGRA, GL_UNSIGNED_BYTE, coolImage.data ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); glActiveTexture( GL_TEXTURE0 ); glBindTexture( GL_TEXTURE_2D, texture ); // Set texture sampler variable to texture unit 0 // (set in glActiveTexture(GL_TEXTURE0)) glUniform1i( uTex, 0 ); Arcball = new BallData ; Ball_Init(Arcball); Ball_Place(Arcball,qOne,0.75); }