Jump to content
  • Advertisement

Flustration

Member
  • Content Count

    6
  • Joined

  • Last visited

Community Reputation

101 Neutral

About Flustration

  • Rank
    Newbie
  1. Well, the app initiates at the appropriate resolution and everything... I just lose input.
  2. Okay, I see that the red pixels were actually ENTIRELY by my own hand... however, I cannot get blending to actually work. When I swap thevalues in glBlendFunc call, I get a black screen BTW.
  3. All right... now that I have seen your edit, I have removed the alpha testing stuff altogether. Here is what I get now:
  4. All right, here goes. First, I tried just changing that line. glEnable( GL_TEXTURE_2D ); glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_BLEND); glAlphaFunc(GL_NOTEQUAL, 1); glEnable(GL_ALPHA_TEST); I got this output (there are barely-visible blue pixels where there should be transparency). So then, I changed the alpha func around...: glAlphaFunc(GL_GREATER, 0); But I got this output: http://i.imgur.com/QVBMj.png totally black!
  5. Hello, all. I am getting red backgrounds on my textures which should be transparent... Here are my source image files: http://dl.dropbox.co.../slider_bar.tga http://dl.dropbox.co...ider_slider.tga Here are all my OpenGL options: glEnable( GL_TEXTURE_2D ); glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA); glEnable(GL_BLEND); glAlphaFunc(GL_NOTEQUAL, 1); glEnable(GL_ALPHA_TEST); glClearColor ( 0.0f, 0.0f, 0.0f, 0.0f); glViewport( 0, 0, 900, 600 ); glClear( GL_COLOR_BUFFER_BIT ); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); glOrtho(0.0f, 900, 600, 0.0f, -1.0f, 1.0f); glMatrixMode( GL_MODELVIEW ); glScalef(1, -1, 1); glDisable(GL_DEPTH_TEST); glLoadIdentity(); Here is my texture loading/initialization code: texture::texture(SDL_Surface *rawSurface) { if(listInitialized == false) { initList(); } for(int a = 0; a < 256; a++) { if(textureFree[a] == true) { glTexture = a; numTextures++; textureFree[a] = false; break; } } SDL_PixelFormat pixF = *rawSurface->format; std::cout << "BPP : " << (int) pixF.BytesPerPixel; SDL_Surface *surface; textureRect.w = nextPowerOfTwo(rawSurface->w); textureRect.h = nextPowerOfTwo(rawSurface->h); textureRect.x = 0; textureRect.y = 0; imageRect.w = rawSurface->w; imageRect.h = rawSurface->h; imageRect.x = 0; imageRect.y = 0; paddingW = textureRect.w - imageRect.w; paddingH = textureRect.h - imageRect.h; //where within the texture surface is the actual image? SDL_Rect rectDestination; rectDestination.w = imageRect.w; rectDestination.h = imageRect.h; rectDestination.x = paddingW; rectDestination.y = paddingH; GLint nOfColors = rawSurface->format->BytesPerPixel; GLenum texture_format; if (nOfColors == 4) // contains an alpha channel { if (rawSurface->format->Rmask == 0x000000ff) { std::cout << "format RGBA\n"; texture_format = GL_RGBA; } else { std::cout << "format BGRA\n"; texture_format = GL_BGRA; } } else if (nOfColors == 3) // no alpha channel { if (rawSurface->format->Rmask == 0x000000ff) { std::cout << "format RGB\n"; texture_format = GL_RGB; } else { std::cout << "format BGR\n"; texture_format = GL_BGR; } } surface = SDL_CreateRGBSurface(SDL_SWSURFACE, textureRect.w , textureRect.h , 32, rawSurface->format->Rmask, rawSurface->format->Gmask, rawSurface->format->Bmask, rawSurface->format->Amask); SDL_FillRect(surface, &textureRect, SDL_MapRGBA(surface->format, 255, 0, 0, 9)); SDL_SetAlpha(rawSurface, 0, SDL_ALPHA_OPAQUE); SDL_SetAlpha(surface, 0, SDL_ALPHA_OPAQUE); SDL_BlitSurface(rawSurface, &imageRect, surface, &rectDestination); SDL_SetAlpha(rawSurface, SDL_SRCALPHA, 0); SDL_SetAlpha(surface, SDL_SRCALPHA, SDL_ALPHA_OPAQUE); glBindTexture(GL_TEXTURE_2D, textureBank[glTexture]); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, 4, surface->w, surface->h, 0, texture_format, GL_UNSIGNED_BYTE, surface->pixels); if(surface) {SDL_FreeSurface( surface );} } and finally, rendering... void texture::drawTexture(int x, int y) { x = x - paddingW; // Bind the texture to which subsequent calls refer to glBindTexture( GL_TEXTURE_2D, textureBank[glTexture] ); glColor4f(1,1,1,1); glBegin( GL_QUADS ); //Bottom-left vertex (corner) glTexCoord2i( 0, 0 ); glVertex3f( x, (y + textureRect.h), 0.0f ); //Bottom-right vertex (corner) glTexCoord2i( 1, 0 ); glVertex3f( (x + textureRect.w), (y + textureRect.h), 0.f ); //Top-right vertex (corner) glTexCoord2i( 1, 1 ); glVertex3f( (x + textureRect.w), y, 0.f ); //Top-left vertex (corner) glTexCoord2i( 0, 1 ); glVertex3f( x, y, 0.f ); glEnd(); } And my output... Halp Thanks
  6. Hello! My SDL OpenGL application is based on SDL. For some reason, I receive input fine via the SDL_Event unless I add the SDL_Fullscreen flag. In full screen mode, I get no input events at all, strangely. //Start SDL, if( SDL_Init( SDL_INIT_EVERYTHING ) != 0 ) { printf("SDL failed to initialize: %s\n", SDL_GetError()); return 1; } //Set up screen SDL_Surface* screen; SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8); if((screen = SDL_SetVideoMode( 900, 600, 32, SDL_OPENGL | SDL_FULLSCREEN)) == NULL) { printf("Error creating SDL surface: %s\n", SDL_GetError()); } Thanks much!
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!