We can play Blue Thunder!
This commit is contained in:
parent
70dd504b7b
commit
be5e72fc6b
2 changed files with 9 additions and 30 deletions
|
@ -165,6 +165,7 @@ static SDL_Color _colorBackground = { 0, 0, 0, 0 };
|
|||
static SDL_Surface *_overlay = NULL;
|
||||
static SDL_Window *_window = NULL;
|
||||
static SDL_Renderer *_renderer = NULL;
|
||||
static SDL_Texture *_videoTexture = NULL;
|
||||
static int _nextSpriteId = 0;
|
||||
static int _nextSoundId = 0;
|
||||
static int _nextFontId = 0;
|
||||
|
@ -301,7 +302,6 @@ void channelFinished(int channel);
|
|||
void luaDie(lua_State *L, char *method, char *fmt, ...);
|
||||
int luaError(lua_State *L);
|
||||
void luaTrace(lua_State *L, char *method, char *fmt, ...);
|
||||
void makeZeroTransparent(SDL_Texture *texture);
|
||||
void processKey(bool down, int keysym);
|
||||
|
||||
|
||||
|
@ -1373,9 +1373,11 @@ int apiVldpGetPixel(lua_State *L) {
|
|||
if (lua_isnumber(L, 2)) {
|
||||
rect.h = 1;
|
||||
rect.w = 1;
|
||||
d = lua_tonumber(L, 1); rect.x = (int)d;
|
||||
d = lua_tonumber(L, 2); rect.y = (int)d;
|
||||
d = lua_tonumber(L, 1); rect.x = (int)(d / _overlayScaleX);
|
||||
d = lua_tonumber(L, 2); rect.y = (int)(d / _overlayScaleY);
|
||||
if (SDL_SetRenderTarget(_renderer, _videoTexture) < 0) luaDie(L, "vldpGetPixel", "%s", SDL_GetError());
|
||||
if (SDL_RenderReadPixels(_renderer, &rect, SDL_PIXELFORMAT_BGRA32, pixel, SDL_BYTESPERPIXEL(SDL_PIXELFORMAT_BGRA32) * videoGetWidth(_videoHandle)) < 0) luaDie(L, "vldpGetPixel", "%s", SDL_GetError());
|
||||
if (SDL_SetRenderTarget(_renderer, NULL) < 0) luaDie(L, "vldpGetPixel", "%s", SDL_GetError());
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
|
@ -1830,29 +1832,6 @@ void luaTrace(lua_State *L, char *method, char *fmt, ...) {
|
|||
}
|
||||
|
||||
|
||||
void makeZeroTransparent(SDL_Texture *texture) {
|
||||
int x;
|
||||
int y;
|
||||
int w;
|
||||
int h;
|
||||
int access;
|
||||
Uint32 format;
|
||||
Uint32 *pixel = NULL; // Four bytes in BGRA order
|
||||
size_t pixelSize = 0;
|
||||
static size_t lastPixelsSize = 0;
|
||||
|
||||
if (SDL_QueryTexture(texture, &format, &access, &w, &h) < 0) utilDie("%s", SDL_GetError());
|
||||
pixelSize = (size_t)(w * h * 4);
|
||||
if (pixelSize != lastPixelsSize) {
|
||||
// Reallocate buffer
|
||||
if (_pixelBuffer) free(_pixelBuffer);
|
||||
lastPixelsSize = pixelSize;
|
||||
_pixelBuffer = malloc(lastPixelsSize);
|
||||
if (!_pixelBuffer) utilDie("Unable to allocate pixels for transparency replacement.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void processKey(bool down, int keysym) {
|
||||
int move;
|
||||
|
||||
|
@ -1927,7 +1906,6 @@ void singe(SDL_Window *window, SDL_Renderer *renderer) {
|
|||
int thisFrame = -1;
|
||||
int lastFrame = -1;
|
||||
int intReturn = 0;
|
||||
SDL_Texture *videoTexture = NULL;
|
||||
SDL_Texture *overlayTexture = NULL;
|
||||
SpriteT *sprite = NULL;
|
||||
SpriteT *spriteTemp = NULL;
|
||||
|
@ -2229,7 +2207,7 @@ void singe(SDL_Window *window, SDL_Renderer *renderer) {
|
|||
}
|
||||
|
||||
// Update video
|
||||
thisFrame = videoUpdate(_videoHandle, &videoTexture);
|
||||
thisFrame = videoUpdate(_videoHandle, &_videoTexture);
|
||||
if ((thisFrame != lastFrame) && (thisFrame>= 0)) {
|
||||
lastFrame = thisFrame;
|
||||
_refreshDisplay = true;
|
||||
|
@ -2238,7 +2216,7 @@ void singe(SDL_Window *window, SDL_Renderer *renderer) {
|
|||
// Update display
|
||||
if (_refreshDisplay) {
|
||||
//***TODO*** Handle overlay and blank disk frames
|
||||
SDL_RenderCopy(_renderer, videoTexture, NULL, NULL);
|
||||
SDL_RenderCopy(_renderer, _videoTexture, NULL, NULL);
|
||||
//makeZeroTransparent(_overlay);
|
||||
overlayTexture = SDL_CreateTextureFromSurface(_renderer, _overlay);
|
||||
if (!overlayTexture) utilDie("%s", SDL_GetError());
|
||||
|
|
|
@ -304,7 +304,8 @@ int videoLoad(char *filename, char *indexPath, bool stretchVideo, SDL_Renderer *
|
|||
|
||||
// Create video texture
|
||||
SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "linear");
|
||||
v->videoTexture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_BGRA32, SDL_TEXTUREACCESS_STREAMING, v->propFrame->EncodedWidth, v->propFrame->EncodedHeight);
|
||||
//v->videoTexture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_BGRA32, SDL_TEXTUREACCESS_STREAMING, v->propFrame->EncodedWidth, v->propFrame->EncodedHeight);
|
||||
v->videoTexture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_BGRA32, SDL_TEXTUREACCESS_TARGET, v->propFrame->EncodedWidth, v->propFrame->EncodedHeight);
|
||||
if (v->videoTexture == NULL) utilDie("%s", SDL_GetError());
|
||||
if (!stretchVideo) {
|
||||
SDL_RenderSetLogicalSize(renderer, v->propFrame->EncodedWidth, v->propFrame->EncodedHeight);
|
||||
|
|
Loading…
Add table
Reference in a new issue