int main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA); glutInitWindowPosition(100,100); glutInitWindowSize(600,600); glutCreateWindow("GL"); glutDisplayFunc(render); glutIdleFunc(updateTimer); glutTimerFunc(100, update, 0); glutKeyboardFunc(processKeys); g_dirtTexture = loadTexture("dirt.raw", 128, 128); g_grassTexture = loadTexture("grass.raw", 128, 128); ASSERT(g_dirtTexture); ASSERT(g_grassTexture); glClearColor(0.0f, 0.0f, 0.0f, 0.5f); glEnable(GL_DEPTH_TEST); glDisable(GL_BLEND); glutMainLoop(); freeTexture(g_dirtTexture); freeTexture(g_grassTexture); return 0; }
GLAnalyzer3::~GLAnalyzer3() { freeTexture( ballTexture ); freeTexture( gridTexture ); delete leftPaddle; delete rightPaddle; balls.clear(); }
//Note: //Code adapted from NeheTutorials. bool Texture::loadTextureFromBMP( const char *path ) // Creates Texture From A Bitmap File { //Check if there is already a texture, and if so, free it. freeTexture(); HBITMAP hBMP; // Handle Of The Bitmap BITMAP BMP; // Bitmap Structure glGenTextures(1, &mTextureID); // Create The Texture hBMP=(HBITMAP)LoadImage(GetModuleHandle(NULL), path, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE ); if (!hBMP) // Does The Bitmap Exist? return false; // If Not Return False GetObject(hBMP, sizeof(BMP), &BMP); // Get The Object // hBMP: Handle To Graphics Object // sizeof(BMP): Size Of Buffer For Object Information // &BMP: Buffer For Object Information glPixelStorei(GL_UNPACK_ALIGNMENT, 4); // Pixel Storage Mode (Word Alignment / 4 Bytes) // Typical Texture Generation Using Data From The Bitmap glBindTexture(GL_TEXTURE_2D, mTextureID); // Bind To The Texture ID setFilters(); facilitateWrap(); glTexImage2D(GL_TEXTURE_2D, 0, 3, BMP.bmWidth, BMP.bmHeight, 0, GL_BGR_EXT, GL_UNSIGNED_BYTE, BMP.bmBits); DeleteObject(hBMP); // Delete The Object return true; // Loading Was Successful }
bool SDLWrapper::loadImageFromFile(std::string path) { // Get rid of previous texture freeTexture(); // Create the final Texture SDL_Texture* newTexture = NULL; SDL_Surface* loadedSurface = IMG_Load( path.c_str()); if (loadedSurface == NULL) { printf("The image could not be loaded %s| ERR: %s\n",path.c_str(),SDL_GetError()); } else { newTexture = SDL_CreateTextureFromSurface( RENDERER, loadedSurface); if (newTexture == NULL) { printf("Failed to convert surface | ERR: %s", SDL_GetError()); } else { WIDTH = loadedSurface->w; HEIGHT = loadedSurface->h; } SDL_FreeSurface(loadedSurface); } TEXTURE = newTexture; return TEXTURE != NULL; }
bool Texture::loadTextureFromPixels32( GLuint* pixels, GLuint width, GLuint height ) { //Check if there is already a texture, and if so, free it. freeTexture(); //Preemptively set width and height. mSize.set(width, height); //Generate texture ID. glGenTextures( 1, &mTextureID ); //Bind texture ID. glBindTexture( GL_TEXTURE_2D, mTextureID ); //Generate texture from array given, assuming 32-bit (RGBA). glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels ); setFilters(); facilitateWrap(); //Unbind texture. glBindTexture( GL_TEXTURE_2D, NULL ); //Check for error. GLenum error = glGetError(); if( error != GL_NO_ERROR ) { printf( "Error loading texture from %p pixels! %s\n", pixels, gluErrorString( error ) ); return false; } return true; }
void VisualText::setFont(FontProvider::FontType type, int32 customFontIndex) { if (type != _fontType || customFontIndex != _fontCustomIndex) { freeTexture(); _fontType = type; _fontCustomIndex = customFontIndex; } }
bool Texture::loadTextureFromPixels32( GLuint* pixels, GLuint width, GLuint height ){ //Free texture if it exists freeTexture(); //Get texture dimensions mTextureWidth = width; mTextureHeight = height; //Generate texture ID glGenTextures( 1, &mTextureID ); //Bind texture ID glBindTexture( GL_TEXTURE_2D, mTextureID ); //Generate texture glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels ); //Set texture parameters glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); //Unbind texture glBindTexture( GL_TEXTURE_2D, (GLuint)NULL ); //Check for error GLenum error = glGetError(); if( error != GL_NO_ERROR ){ //printf( "Error loading texture from %p pixels! %s\n", pixels, gluErrorString( error ) ); return false; } return true; }
LTexture::~LTexture() { //Free texture data if needed freeTexture(); //Free VBO and IBO if needed freeVBO(); }
void VisualText::setColor(const Color &color) { if (_color == color) { return; } freeTexture(); _color = color; }
void IrrlichtTexture::loadFromFile(const String& filename, const String& resourceGroup) { freeTexture(); driver->setTextureCreationFlag(irr::video::ETCF_CREATE_MIP_MAPS,true); tex=driver->getTexture(filename.c_str()); tex->grab(); }
void VisualText::setBackgroundColor(const Color &color) { if (color == _backgroundColor) { return; } freeTexture(); _backgroundColor = color; }
SDLWrapper::~SDLWrapper() { // Deallocate the window free(); // Deallocate the texture freeTexture(); IMG_Quit(); SDL_Quit(); }
void freeMaterial(Material *mat) { for (uint32 i = 0; i < mat->texCount; ++i) { freeTexture(mat->textures[i]); mat->textures[i] = NULL; } free(mat->textures); free(mat); }
bool LFTexture::loadFromFile(SDL_Renderer* theRenderer, std::string fileName, SDL_Point* transparentCoordinate) { //Get rid of preexisting texture freeTexture(); //The final texture SDL_Texture* newTexture = nullptr; //Load image at specified path SDL_Surface* loadedSurface = IMG_Load( fileName.c_str() ); if( loadedSurface == nullptr ) { std::cout << "Unable to load image "<< fileName.c_str() << "! SDL_image Error: " << IMG_GetError() << std::endl; } else { Uint8 ri = 0xFF; Uint8 gi = 0xFF; Uint8 bi = 0xFF; if (transparentCoordinate != nullptr) { // get the rgb value from the pixel at the co-ordinates Uint32 px = getPixel(loadedSurface, transparentCoordinate->x, transparentCoordinate->y); SDL_GetRGB(px, loadedSurface->format, &ri, &gi, &bi); } //Color key image SDL_SetColorKey(loadedSurface, SDL_TRUE, SDL_MapRGB( loadedSurface->format, ri, gi, bi)); //Create texture from surface pixels newTexture = SDL_CreateTextureFromSurface( theRenderer, loadedSurface ); if( newTexture == nullptr ) { std::cout << "Unable to create texture from " << fileName.c_str() << "! SDL Error: " << SDL_GetError() << std::endl; } else { //Get image dimensions m_width = loadedSurface->w; m_height = loadedSurface->h; } //Get rid of old loaded surface SDL_FreeSurface( loadedSurface ); } //Return success m_Texture = newTexture; return m_Texture != NULL; }
void ServerConnectionView::showWaitingRoom() { if (!init()) { return; } SDL_Rect formTitleRect = { 0, TEXT_SPACING, 0, 0 }; SDL_Texture* formTitle = renderText("Esperando conexion de los clientes...", &formTitleRect); formTitleRect.x = (WINDOW_WIDTH - formTitleRect.w) / 2; SDL_Rect formButtonRect = { 0, formTitleRect.y + formTitleRect.h + 2 * TEXT_SPACING, 0, 0 }; SDL_Texture* formButton = renderText("Comenzar Partida", &formButtonRect); formButtonRect.x = (WINDOW_WIDTH - formButtonRect.w) / 2; submitButton = { formButtonRect.x - TEXT_SPACING / 2, formButtonRect.y - TEXT_SPACING / 2, formButtonRect.w + TEXT_SPACING, formButtonRect.h + TEXT_SPACING }; while (!shouldQuit) { // Update texts pullChanges(); // Clear screen SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF); SDL_RenderClear(renderer); // Draw SDL_RenderCopy(renderer, this->backgroundTexture, NULL, NULL); SDL_RenderCopy(renderer, formTitle, NULL, &formTitleRect); SDL_RenderCopy(renderer, formButton, NULL, &formButtonRect); SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0xFF); SDL_RenderDrawRect(renderer, &submitButton); // Update screen SDL_RenderPresent(renderer); SDL_Delay(50); } // Free memory freeTexture(formButton); // Stop capturing the keyboard events SDL_StopTextInput(); quit(); }
Texture* HeightmapCache::getFreeTexture(const unsigned __int64& newId) { if (mFreeTextures.size() == 0) { freeTexture(); } Texture* back = mFreeTextures.back().TexturePtr; mFreeTextures.pop_back(); mActiveTextures[newId] = back; return back; }
void cleanup() { freeTexture(); checkCudaErrors(cudaGraphicsUnregisterResource(cuda_pbo_resource)); glDeleteBuffersARB(1, &pbo); #if USE_BUFFER_TEX glDeleteTextures(1, &bufferTex); glDeleteProgramsARB(1, &fprog); #else glDeleteTextures(1, &displayTex); #endif }
void GLTexture::loadToVRAM() { // If we are bound.... if (textureID == 0) { freeTexture(); if (rawData != NULL) { glGenTextures(1, &textureID); //Grab a texture ID bind(); glTexImage2D(GL_TEXTURE_2D, 0, pixFMT, width, height, 0, pixFMT, GL_UNSIGNED_BYTE, (GLvoid*) rawData); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); } } }
void re_cManagerTexture::freeAll(void) { re_sTexture* t_texture = m_head; while (t_texture != nullptr) { m_head = m_head->next; if (t_texture->ID != 0) freeTexture(t_texture->ID); delete t_texture; t_texture = nullptr; t_texture = m_head; } m_head = nullptr; m_tail = nullptr; }
void ResourceManager::unloadResources() { for (auto model = models_.begin(); model != models_.end(); model++) { freeModel(model->second); } for (auto texture = textures_.begin(); texture != textures_.end(); texture++) { freeTexture(texture->second); } for (auto shader = shaders_.begin(); shader != shaders_.end(); shader++) { delete (shader->second); } models_.clear(); textures_.clear(); shaders_.clear(); }
void IrrlichtTexture::loadFromFile(const String& filename, const String& resourceGroup) { freeTexture(); RawDataContainer texFile; System::getSingleton().getResourceProvider()->loadRawDataContainer(filename, texFile, resourceGroup); IrrlichtMemoryFile imf(filename, texFile.getDataPtr(), texFile.getSize()); driver->setTextureCreationFlag(irr::video::ETCF_CREATE_MIP_MAPS,true); tex=driver->getTexture(&imf); tex->grab(); // unload file data buffer System::getSingleton().getResourceProvider()->unloadRawDataContainer(texFile); updateCachedScaleValues(); }
bool LTexture::loadTextureFromPixels32( GLuint* pixels, GLuint imgWidth, GLuint imgHeight, GLuint texWidth, GLuint texHeight ) { //Free texture data if needed freeTexture(); //Get image dimensions mImageWidth = imgWidth; mImageHeight = imgHeight; mTextureWidth = texWidth; mTextureHeight = texHeight; //Generate texture ID glGenTextures( 1, &mTextureID ); //Bind texture ID glBindTexture( GL_TEXTURE_2D, mTextureID ); //Generate texture glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, mTextureWidth, mTextureHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels ); //Set texture parameters glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, DEFAULT_TEXTURE_WRAP ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, DEFAULT_TEXTURE_WRAP ); //Unbind texture glBindTexture( GL_TEXTURE_2D, NULL ); //Check for error GLenum error = glGetError(); if( error != GL_NO_ERROR ) { printf( "Error loading texture from %p pixels! %s\n", pixels, gluErrorString( error ) ); return false; } //Generate VBO initVBO(); //Set pixel format mPixelFormat = GL_RGBA; return true; }
bool JTexture::loadPixelsFromFile(std::string path) { //deallocate previous texture data freeTexture(); bool pixelsLoaded = false; ILuint imgID = 0; ilGenImages(1, &imgID); ilBindImage(imgID); ILboolean success = ilLoadImage(path.c_str()); if(success == IL_TRUE) { success = ilConvertImage(IL_RGBA, IL_UNSIGNED_BYTE); if(success == IL_TRUE) { GLuint imgWidth = (GLuint)ilGetInteger(IL_IMAGE_WIDTH); GLuint imgHeight = (GLuint)ilGetInteger(IL_IMAGE_HEIGHT); GLuint size = imgWidth * imgHeight; mPixels = new GLuint[size]; mTextureWidth = imgWidth; mTextureHeight = imgHeight; memcpy(mPixels, ilGetData(), size * 4); pixelsLoaded = true; } ilDeleteImages(1, &imgID); } if(!pixelsLoaded) { printf("Unable to load %s\n", path.c_str()); } return pixelsLoaded; }
void IrrlichtTexture::loadFromMemory(const void* buffPtr, uint buffWidth, uint buffHeight) { freeTexture(); irr::core::dimension2d<irr::s32> dim(buffWidth,buffHeight); irr::core::stringc name=getUniqueName(); driver->setTextureCreationFlag(irr::video::ETCF_CREATE_MIP_MAPS,true); tex=driver->addTexture(dim,name.c_str(),irr::video::ECF_A8R8G8B8); if(irr::video::ECF_A8R8G8B8==tex->getColorFormat()) // paranoid! { irr::u32* tt=(irr::u32*)tex->lock(); irr::core::dimension2d<irr::s32> d=tex->getSize(); memcpy(tt,buffPtr,d.Width*d.Height*sizeof(CEGUI::ulong)); tex->unlock(); } tex->grab(); }
void cleanup() { freeTexture(); checkCudaErrors(cudaGraphicsUnregisterResource(cuda_pbo_resource)); glDeleteBuffersARB(1, &pbo); #if USE_BUFFER_TEX glDeleteTextures(1, &bufferTex); glDeleteProgramsARB(1, &fprog); #else glDeleteTextures(1, &displayTex); #endif sdkDeleteTimer(&timer); // cudaDeviceReset causes the driver to clean up all state. While // not mandatory in normal operation, it is good practice. It is also // needed to ensure correct operation when the application is being // profiled. Calling cudaDeviceReset causes all profile data to be // flushed before the application exits cudaDeviceReset(); }
void Texture::loadCheckerboard() { freeTexture(); glGenTextures(1, &mTextureID); glBindTexture(GL_TEXTURE_2D, mTextureID); float pixels[] = { 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f }; glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 2, 2, 0, GL_RGB, GL_FLOAT, pixels); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //glGenerateMipmap(GL_TEXTURE_2D); setFilters(); facilitateWrap(); }
void IrrlichtTexture::loadFromMemory(const void* buffPtr, uint buffWidth, uint buffHeight, PixelFormat pixelFormat) { freeTexture(); irr::core::dimension2d<irr::s32> dim(buffWidth,buffHeight); irr::core::stringc name=getUniqueName(); driver->setTextureCreationFlag(irr::video::ETCF_CREATE_MIP_MAPS,true); unsigned int pixelSize; irr::video::ECOLOR_FORMAT texFormat; switch(pixelFormat) { case PF_RGB: pixelSize = 3; texFormat = irr::video::ECF_R8G8B8; break; case PF_RGBA: pixelSize = 4; texFormat = irr::video::ECF_A8R8G8B8; break; } tex=driver->addTexture(dim,name.c_str(), texFormat); if(texFormat == tex->getColorFormat()) // paranoid! { irr::u32* tt=(irr::u32*)tex->lock(); irr::core::dimension2d<irr::s32> d=tex->getSize(); memcpy(tt,buffPtr,d.Width*d.Height*pixelSize); tex->unlock(); } tex->grab(); updateCachedScaleValues(); }
LTexture::~LTexture() { //Free texture data if needed freeTexture(); }
JTexture::~JTexture(void) { freeTexture(); }
void ServerConnectionView::showForm() { if (!init()) { return; } SDL_Rect formTitleRect = { 0, TEXT_SPACING, 0, 0 }; SDL_Texture* formTitle = renderText("Eligiendo objetivo de la partida...", &formTitleRect); formTitleRect.x = (WINDOW_WIDTH - formTitleRect.w) / 2; SDL_Rect formButtonkillAllRect = { TEXT_SPACING, formTitleRect.y + formTitleRect.h + TEXT_SPACING * 2, 0, 0 }; SDL_Texture* formButtonkillAll = renderText("Kill All", &formButtonkillAllRect); formButtonkillAllRect.x = formButtonkillAllRect.x + formButtonkillAllRect.w; killAllButton = { formButtonkillAllRect.x - TEXT_SPACING / 2, formButtonkillAllRect.y - TEXT_SPACING / 2, formButtonkillAllRect.w + TEXT_SPACING , formButtonkillAllRect.h + TEXT_SPACING }; SDL_Rect formButtonFlagRect = { formButtonkillAllRect.x + formButtonkillAllRect.w, formTitleRect.y + formTitleRect.h + TEXT_SPACING * 2, 0, 0 }; SDL_Texture* formButtonFlag = renderText("Captura la bandera", &formButtonFlagRect); formButtonFlagRect.x = formButtonFlagRect.x + formButtonkillAllRect.w; flagButton = { formButtonFlagRect.x - TEXT_SPACING / 2, formButtonFlagRect.y - TEXT_SPACING / 2, formButtonFlagRect.w + TEXT_SPACING , formButtonFlagRect.h + TEXT_SPACING }; SDL_Rect formButtonKingRect = { formButtonFlagRect.x + formButtonFlagRect.w, formTitleRect.y + formTitleRect.h + TEXT_SPACING * 2, 0, 0 }; SDL_Texture* formButtonKing = renderText("Matar al rey", &formButtonKingRect); formButtonKingRect.x = formButtonKingRect.x + +formButtonkillAllRect.w; kingButton = { formButtonKingRect.x - TEXT_SPACING / 2, formButtonKingRect.y - TEXT_SPACING / 2, formButtonKingRect.w + TEXT_SPACING , formButtonKingRect.h + TEXT_SPACING }; SDL_Rect formButtonRect = { 0, formButtonKingRect.y + formButtonKingRect.h + 2 * TEXT_SPACING, 0, 0 }; SDL_Texture* formButton = renderText("Levantar Servidor", &formButtonRect); formButtonRect.x = (WINDOW_WIDTH - formButtonRect.w) / 2; submitButton = { formButtonRect.x - TEXT_SPACING / 2, formButtonRect.y - TEXT_SPACING / 2, formButtonRect.w + TEXT_SPACING, formButtonRect.h + TEXT_SPACING }; while (!shouldQuit) { // Update texts pullChanges(); // Clear screen SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF); SDL_RenderClear(renderer); // Draw SDL_RenderCopy(renderer, this->backgroundTexture, NULL, NULL); SDL_RenderCopy(renderer, formTitle, NULL, &formTitleRect); SDL_RenderCopy(renderer, formButtonkillAll, NULL, &formButtonkillAllRect); if (this->objetivo == KILL_ALL) { SDL_SetRenderDrawColor(renderer, 0xFF, 0x66, 0x00, 0x00); SDL_RenderDrawRect(renderer, &killAllButton); } else { SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0xFF); SDL_RenderDrawRect(renderer, &killAllButton); } SDL_RenderCopy(renderer, formButtonFlag, NULL, &formButtonFlagRect); if (this->objetivo == FLAG) { SDL_SetRenderDrawColor(renderer, 0xFF, 0x66, 0x00, 0x00); SDL_RenderDrawRect(renderer, &flagButton); } else { SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0xFF); SDL_RenderDrawRect(renderer, &flagButton); } SDL_RenderCopy(renderer, formButtonKing, NULL, &formButtonKingRect); if (this->objetivo == KING) { SDL_SetRenderDrawColor(renderer, 0xFF, 0x66, 0x00, 0x00); SDL_RenderDrawRect(renderer, &kingButton); } else { SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0xFF); SDL_RenderDrawRect(renderer, &kingButton); } SDL_RenderCopy(renderer, formButton, NULL, &formButtonRect); SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0xFF); SDL_RenderDrawRect(renderer, &submitButton); // Update screen SDL_RenderPresent(renderer); SDL_Delay(50); } // Free memory freeTexture(formTitle); freeTexture(formButtonkillAll); freeTexture(formButtonFlag); freeTexture(formButtonKing); freeTexture(formButton); quit(); }