Mercurial > sdl-ios-xcode
view Xcode/TemplatesForXcodeSnowLeopard/SDL Cocoa Application/main.c @ 3707:d8308bc267bc
Adam Strzelecki to SDL
When graphic card has no GL_ARB_texture_rectangle YUV textures mapped with SDL_RenderCopy are stretched 2x horizontally, so only left half of texture is visible. This is due:
data->texw = (GLfloat) (texture->w) / texture_w;
data->texh = (GLfloat) texture->h / texture_h;
But afterwards texture_w /= 2 for YUV texture, but data->texw stays as it was before, while it should be multiplied 2x.
This bug can be seen in any program setting env variables: GL_APPLE_ycbcr_422=0 GL_EXT_texture_rectangle=0 GL_ARB_texture_rectangle=0
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Wed, 17 Feb 2010 04:42:52 +0000 |
parents | d44a0a913aa2 |
children |
line wrap: on
line source
/* Simple program: Create a blank window, wait for keypress, quit. Please see the SDL documentation for details on using the SDL API: /Developer/Documentation/SDL/docs.html */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "SDL.h" int main(int argc, char *argv[]) { Uint32 initflags = SDL_INIT_VIDEO; /* See documentation for details */ SDL_Surface *screen; Uint8 video_bpp = 0; Uint32 videoflags = SDL_SWSURFACE; int done; SDL_Event event; /* Initialize the SDL library */ if ( SDL_Init(initflags) < 0 ) { fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); exit(1); } /* Set 640x480 video mode */ screen=SDL_SetVideoMode(640,480, video_bpp, videoflags); if (screen == NULL) { fprintf(stderr, "Couldn't set 640x480x%d video mode: %s\n", video_bpp, SDL_GetError()); SDL_Quit(); exit(2); } done = 0; while ( !done ) { /* Check for events */ while ( SDL_PollEvent(&event) ) { switch (event.type) { case SDL_MOUSEMOTION: break; case SDL_MOUSEBUTTONDOWN: break; case SDL_KEYDOWN: /* Any keypress quits the app... */ case SDL_QUIT: done = 1; break; default: break; } } } /* Clean up the SDL library */ SDL_Quit(); return(0); }