mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-28 04:34:50 +00:00
SLUDGE: Use PNGDecoder to read backdrop
This commit is contained in:
parent
6808650f3e
commit
2dddb900c9
@ -55,6 +55,10 @@
|
||||
#include "statusba.h"
|
||||
#include "variable.h"
|
||||
#include "CommonCode/version.h"
|
||||
#include "common/debug.h"
|
||||
#include "image/png.h"
|
||||
#include "graphics/surface.h"
|
||||
#include "sludge.h"
|
||||
|
||||
namespace Sludge {
|
||||
|
||||
@ -75,6 +79,8 @@ texture lightMap;
|
||||
GLuint snapshotTextureName = 0;
|
||||
#endif
|
||||
|
||||
Graphics::Surface backdropSurface;
|
||||
|
||||
float snapTexW = 1.0;
|
||||
float snapTexH = 1.0;
|
||||
|
||||
@ -110,7 +116,8 @@ void saveSnapshot(Common::WriteStream *stream) {
|
||||
bool snapshot() {
|
||||
|
||||
nosnapshot();
|
||||
if (!freeze()) return false;
|
||||
if (!freeze())
|
||||
return false;
|
||||
#if 0
|
||||
setPixelCoords(true);
|
||||
glGenTextures(1, &snapshotTextureName);
|
||||
@ -134,19 +141,19 @@ bool snapshot() {
|
||||
|
||||
// Render scene
|
||||
glDepthMask(GL_TRUE);
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);// Clear The Screen
|
||||
glDepthMask(GL_FALSE);
|
||||
|
||||
drawBackDrop(); // Draw the room
|
||||
drawBackDrop();// Draw the room
|
||||
drawZBuffer(cameraX, cameraY, false);
|
||||
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
|
||||
drawPeople(); // Then add any moving characters...
|
||||
drawPeople();// Then add any moving characters...
|
||||
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
|
||||
viewSpeech(); // ...and anything being said
|
||||
viewSpeech();// ...and anything being said
|
||||
drawStatusBar();
|
||||
// Copy Our ViewPort To The Texture
|
||||
copyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, viewportOffsetX, viewportOffsetY, winWidth, winHeight, snapshotTextureName);
|
||||
@ -178,7 +185,7 @@ bool restoreSnapshot(Common::SeekableReadStream *stream) {
|
||||
if (!snapshotTexture) return fatal("Out of memory while restoring snapshot.");
|
||||
#endif
|
||||
|
||||
for (t2 = 0; t2 < winHeight; t2 ++) {
|
||||
for (t2 = 0; t2 < winHeight; t2++) {
|
||||
t1 = 0;
|
||||
while (t1 < winWidth) {
|
||||
c = (unsigned short) get2bytes(stream);
|
||||
@ -255,11 +262,11 @@ void killParallax() {
|
||||
bool reserveBackdrop() {
|
||||
cameraX = 0;
|
||||
cameraY = 0;
|
||||
input.mouseX = (int)((float)input.mouseX * cameraZoom);
|
||||
input.mouseY = (int)((float)input.mouseY * cameraZoom);
|
||||
input.mouseX = (int) ((float) input.mouseX * cameraZoom);
|
||||
input.mouseY = (int) ((float) input.mouseY * cameraZoom);
|
||||
cameraZoom = 1.0;
|
||||
input.mouseX = (int)((float)input.mouseX / cameraZoom);
|
||||
input.mouseY = (int)((float)input.mouseY / cameraZoom);
|
||||
input.mouseX = (int) ((float) input.mouseX / cameraZoom);
|
||||
input.mouseY = (int) ((float) input.mouseY / cameraZoom);
|
||||
setPixelCoords(false);
|
||||
int picWidth = sceneWidth;
|
||||
int picHeight = sceneHeight;
|
||||
@ -304,8 +311,8 @@ bool resizeBackdrop(int x, int y) {
|
||||
}
|
||||
|
||||
void loadBackDrop(int fileNum, int x, int y) {
|
||||
debug(kSludgeDebugGraphics, "Load back drop");
|
||||
setResourceForFatal(fileNum);
|
||||
#if 0
|
||||
if (!openFileFromNum(fileNum)) {
|
||||
fatal("Can't load overlay image");
|
||||
return;
|
||||
@ -318,7 +325,6 @@ void loadBackDrop(int fileNum, int x, int y) {
|
||||
}
|
||||
|
||||
finishAccess();
|
||||
#endif
|
||||
setResourceForFatal(-1);
|
||||
}
|
||||
|
||||
@ -341,10 +347,14 @@ void mixBackDrop(int fileNum, int x, int y) {
|
||||
|
||||
void blankScreen(int x1, int y1, int x2, int y2) {
|
||||
|
||||
if (y1 < 0) y1 = 0;
|
||||
if (x1 < 0) x1 = 0;
|
||||
if (x2 > (int) sceneWidth) x2 = (int)sceneWidth;
|
||||
if (y2 > (int) sceneHeight) y2 = (int)sceneHeight;
|
||||
if (y1 < 0)
|
||||
y1 = 0;
|
||||
if (x1 < 0)
|
||||
x1 = 0;
|
||||
if (x2 > (int) sceneWidth)
|
||||
x2 = (int) sceneWidth;
|
||||
if (y2 > (int) sceneHeight)
|
||||
y2 = (int) sceneHeight;
|
||||
|
||||
int picWidth = x2 - x1;
|
||||
int picHeight = y2 - y1;
|
||||
@ -361,8 +371,6 @@ void blankScreen(int x1, int y1, int x2, int y2) {
|
||||
|
||||
// Render the scene
|
||||
|
||||
|
||||
|
||||
const GLfloat vertices[] = {
|
||||
-10.325f, -1.325f, 0.0f,
|
||||
w + 1.325f, -1.325f, 0.0f,
|
||||
@ -396,7 +404,8 @@ void hardScroll(int distance) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!distance) return;
|
||||
if (!distance)
|
||||
return;
|
||||
#if 0
|
||||
const GLfloat backdropTexCoords[] = {
|
||||
0.0f, 0.0f,
|
||||
@ -415,7 +424,6 @@ void hardScroll(int distance) {
|
||||
while (yoffset < sceneHeight) {
|
||||
int h = (sceneHeight - yoffset < viewportHeight) ? sceneHeight - yoffset : viewportHeight;
|
||||
|
||||
|
||||
glClear(GL_COLOR_BUFFER_BIT); // Clear The Screen
|
||||
|
||||
// Render the backdrop
|
||||
@ -430,7 +438,6 @@ void hardScroll(int distance) {
|
||||
(GLfloat)sceneWidth - xoffset, (GLfloat)sceneHeight - distance - yoffset, 0.
|
||||
};
|
||||
|
||||
|
||||
glUseProgram(shader.texture);
|
||||
|
||||
setPMVMatrix(shader.texture);
|
||||
@ -463,11 +470,13 @@ void darkScreen() {
|
||||
|
||||
int xoffset = 0;
|
||||
while (xoffset < sceneWidth) {
|
||||
int w = (sceneWidth - xoffset < viewportWidth) ? sceneWidth - xoffset : viewportWidth;
|
||||
int w = (sceneWidth - xoffset < viewportWidth) ?
|
||||
sceneWidth - xoffset : viewportWidth;
|
||||
|
||||
int yoffset = 0;
|
||||
while (yoffset < sceneHeight) {
|
||||
int h = (sceneHeight - yoffset < viewportHeight) ? sceneHeight - yoffset : viewportHeight;
|
||||
int h = (sceneHeight - yoffset < viewportHeight) ?
|
||||
sceneHeight - yoffset : viewportHeight;
|
||||
|
||||
// Render the scene - first the old backdrop
|
||||
#if 0
|
||||
@ -490,7 +499,6 @@ void darkScreen() {
|
||||
backdropTexW, backdropTexH
|
||||
};
|
||||
|
||||
|
||||
glUseProgram(shader.texture);
|
||||
|
||||
setPMVMatrix(shader.texture);
|
||||
@ -524,20 +532,14 @@ void darkScreen() {
|
||||
xoffset += w;
|
||||
}
|
||||
|
||||
|
||||
setPixelCoords(false);
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline int sortOutPCamera(int cX, int fX, int sceneMax, int boxMax) {
|
||||
return (fX == 65535) ?
|
||||
(sceneMax ? ((cX * boxMax) / sceneMax) : 0)
|
||||
:
|
||||
((cX * fX) / 100);
|
||||
(sceneMax ? ((cX * boxMax) / sceneMax) : 0) : ((cX * fX) / 100);
|
||||
}
|
||||
|
||||
|
||||
void drawBackDrop() {
|
||||
#if 0
|
||||
setPrimaryColor(1.0, 1.0, 1.0, 1.0);
|
||||
@ -632,7 +634,6 @@ bool loadLightMap(int v) {
|
||||
png_structp png_ptr;
|
||||
png_infop info_ptr, end_info;
|
||||
|
||||
|
||||
int fileIsPNG = true;
|
||||
|
||||
// Is this a PNG file?
|
||||
@ -669,8 +670,8 @@ bool loadLightMap(int v) {
|
||||
png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
|
||||
return false;
|
||||
}
|
||||
png_init_io(png_ptr, bigDataFile); // Tell libpng which file to read
|
||||
png_set_sig_bytes(png_ptr, 8); // 8 bytes already read
|
||||
png_init_io(png_ptr, bigDataFile); // Tell libpng which file to read
|
||||
png_set_sig_bytes(png_ptr, 8);// 8 bytes already read
|
||||
|
||||
png_read_info(png_ptr, info_ptr);
|
||||
|
||||
@ -730,7 +731,7 @@ bool loadLightMap(int v) {
|
||||
if (fileIsPNG) {
|
||||
unsigned char *row_pointers[lightMap.h];
|
||||
for (int i = 0; i < lightMap.h; i++)
|
||||
row_pointers[i] = lightMap.data + 4 * i * newPicWidth;
|
||||
row_pointers[i] = lightMap.data + 4 * i * newPicWidth;
|
||||
|
||||
png_read_image(png_ptr, (png_byte **) row_pointers);
|
||||
png_read_end(png_ptr, NULL);
|
||||
@ -788,13 +789,13 @@ void reloadParallaxTextures() {
|
||||
glGenTextures(1, &nP->textureName);
|
||||
glBindTexture(GL_TEXTURE_2D, nP->textureName);
|
||||
if (nP->wrapS)
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
||||
else
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
if (nP->wrapT)
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
||||
else
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
|
||||
if (gameSettings.antiAlias < 0) {
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
@ -815,7 +816,8 @@ void reloadParallaxTextures() {
|
||||
#endif
|
||||
}
|
||||
|
||||
bool loadParallax(unsigned short v, unsigned short fracX, unsigned short fracY) {
|
||||
bool loadParallax(unsigned short v, unsigned short fracX,
|
||||
unsigned short fracY) {
|
||||
|
||||
#if 0
|
||||
setResourceForFatal(v);
|
||||
@ -839,7 +841,6 @@ bool loadParallax(unsigned short v, unsigned short fracX, unsigned short fracY)
|
||||
png_structp png_ptr;
|
||||
png_infop info_ptr, end_info;
|
||||
|
||||
|
||||
int fileIsPNG = true;
|
||||
|
||||
// Is this a PNG file?
|
||||
@ -875,8 +876,8 @@ bool loadParallax(unsigned short v, unsigned short fracX, unsigned short fracY)
|
||||
png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
|
||||
return false;
|
||||
}
|
||||
png_init_io(png_ptr, bigDataFile); // Tell libpng which file to read
|
||||
png_set_sig_bytes(png_ptr, 8); // 8 bytes already read
|
||||
png_init_io(png_ptr, bigDataFile); // Tell libpng which file to read
|
||||
png_set_sig_bytes(png_ptr, 8);// 8 bytes already read
|
||||
|
||||
png_read_info(png_ptr, info_ptr);
|
||||
|
||||
@ -936,7 +937,7 @@ bool loadParallax(unsigned short v, unsigned short fracX, unsigned short fracY)
|
||||
if (fileIsPNG) {
|
||||
unsigned char *row_pointers[nP->height];
|
||||
for (int i = 0; i < nP->height; i++)
|
||||
row_pointers[i] = nP->texture + 4 * i * picWidth;
|
||||
row_pointers[i] = nP->texture + 4 * i * picWidth;
|
||||
|
||||
png_read_image(png_ptr, (png_byte **) row_pointers);
|
||||
png_read_end(png_ptr, NULL);
|
||||
@ -979,13 +980,13 @@ bool loadParallax(unsigned short v, unsigned short fracX, unsigned short fracY)
|
||||
glGenTextures(1, &nP->textureName);
|
||||
glBindTexture(GL_TEXTURE_2D, nP->textureName);
|
||||
if (nP->wrapS)
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
||||
else
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
if (nP->wrapT)
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
||||
else
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
|
||||
if (gameSettings.antiAlias < 0) {
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
@ -1005,8 +1006,16 @@ bool loadParallax(unsigned short v, unsigned short fracX, unsigned short fracY)
|
||||
|
||||
extern int viewportOffsetX, viewportOffsetY;
|
||||
|
||||
bool loadPng(int &picWidth, int &picHeight, int &realPicWidth, int &realPicHeight, Common::SeekableReadStream *stream, bool reserve) {
|
||||
debug("Loading back drop png.");
|
||||
::Image::PNGDecoder png;
|
||||
if (!png.loadStream(*stream))
|
||||
return false;
|
||||
backdropSurface.copyFrom(*(png.getSurface()));
|
||||
picWidth = realPicWidth = backdropSurface.w;
|
||||
picHeight = realPicHeight = backdropSurface.h;
|
||||
return true;
|
||||
#if 0
|
||||
bool loadPng(GLubyte *loadhere, int &picWidth, int &picHeight, int &realPicWidth, int &realPicHeight, Common::SeekableReadStream *stream, bool reserve) {
|
||||
long file_pointer = stream->pos();
|
||||
png_structp png_ptr;
|
||||
png_infop info_ptr, end_info;
|
||||
@ -1041,7 +1050,7 @@ bool loadPng(GLubyte *loadhere, int &picWidth, int &picHeight, int &realPicWidth
|
||||
return false;
|
||||
}
|
||||
png_init_io(png_ptr, stream); // Tell libpng which file to read
|
||||
png_set_sig_bytes(png_ptr, 8); // 8 bytes already read
|
||||
png_set_sig_bytes(png_ptr, 8);// 8 bytes already read
|
||||
|
||||
png_read_info(png_ptr, info_ptr);
|
||||
|
||||
@ -1069,14 +1078,16 @@ bool loadPng(GLubyte *loadhere, int &picWidth, int &picHeight, int &realPicWidth
|
||||
unsigned char *row_pointers[realPicHeight];
|
||||
|
||||
for (int i = 0; i < realPicHeight; i++)
|
||||
row_pointers[i] = loadhere + 4 * i * picWidth;
|
||||
row_pointers[i] = loadhere + 4 * i * picWidth;
|
||||
|
||||
png_read_image(png_ptr, (png_byte **) row_pointers);
|
||||
png_read_end(png_ptr, NULL);
|
||||
png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
|
||||
#endif
|
||||
}
|
||||
|
||||
bool loadByteArray(GLubyte *loadhere, int &picWidth, int &picHeight, int &realPicWidth, int &realPicHeight, Common::SeekableReadStream *stream, bool reserve) {
|
||||
bool loadByteArray(int &picWidth, int &picHeight, int &realPicWidth, int &realPicHeight, Common::SeekableReadStream *stream, bool reserve) {
|
||||
#if 0
|
||||
int32_t transCol = reserve ? -1 : 63519;
|
||||
int t1, t2, n;
|
||||
unsigned short c;
|
||||
@ -1114,12 +1125,13 @@ bool loadByteArray(GLubyte *loadhere, int &picWidth, int &picHeight, int &realPi
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
bool loadImage(GLubyte *loadhere, int &picWidth, int &picHeight, int &realPicWidth, int &realPicHeight, Common::SeekableReadStream *stream, int x, int y, bool reserve) {
|
||||
|
||||
if (!loadPng(loadhere, picWidth, picHeight, realPicWidth, realPicHeight, stream, reserve)) {
|
||||
if (!loadByteArray(loadhere, picWidth, picHeight, realPicWidth, realPicHeight, stream, reserve)) {
|
||||
bool loadImage(int &picWidth, int &picHeight, int &realPicWidth, int &realPicHeight, Common::SeekableReadStream *stream, int x, int y, bool reserve) {
|
||||
debug(kSludgeDebugGraphics, "Loading back drop image.");
|
||||
if (!loadPng(picWidth, picHeight, realPicWidth, realPicHeight, stream, reserve)) {
|
||||
if (!loadByteArray(picWidth, picHeight, realPicWidth, realPicHeight, stream, reserve)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -1131,6 +1143,7 @@ bool loadImage(GLubyte *loadhere, int &picWidth, int &picHeight, int &realPicWid
|
||||
return true;
|
||||
}
|
||||
|
||||
#if 0
|
||||
void makeGlArray(GLuint &tmpTex, const GLubyte *texture, int picWidth, int picHeight) {
|
||||
glGenTextures(1, &tmpTex);
|
||||
glBindTexture(GL_TEXTURE_2D, tmpTex);
|
||||
@ -1215,7 +1228,7 @@ void renderToTexture(GLuint tmpTex, int x, int y, int picWidth, int picHeight, i
|
||||
|
||||
glUseProgram(shader.paste);
|
||||
GLint uniform = glGetUniformLocation(shader.paste, "useLightTexture");
|
||||
if (uniform >= 0) glUniform1i(uniform, 0); // No lighting
|
||||
if (uniform >= 0) glUniform1i(uniform, 0);// No lighting
|
||||
|
||||
setPMVMatrix(shader.paste);
|
||||
|
||||
@ -1251,15 +1264,14 @@ void renderToTexture(GLuint tmpTex, int x, int y, int picWidth, int picHeight, i
|
||||
setPixelCoords(false);
|
||||
}
|
||||
#endif
|
||||
|
||||
bool loadHSI(Common::SeekableReadStream *stream, int x, int y, bool reserve) {
|
||||
#if 0
|
||||
debug(kSludgeDebugGraphics, "Load HSI");
|
||||
int picWidth, picHeight;
|
||||
int realPicWidth, realPicHeight;
|
||||
|
||||
if (!loadImage(backdropTexture, picWidth, picHeight, realPicWidth, realPicHeight, stream, x, y, reserve))
|
||||
if (!loadImage(picWidth, picHeight, realPicWidth, realPicHeight, stream, x, y, reserve))
|
||||
return false;
|
||||
|
||||
#if 0
|
||||
GLuint tmpTex;
|
||||
makeGlArray(tmpTex, backdropTexture, picWidth, picHeight);
|
||||
|
||||
@ -1283,7 +1295,6 @@ bool mixHSI(Common::SeekableReadStream *stream, int x, int y) {
|
||||
png_structp png_ptr;
|
||||
png_infop info_ptr, end_info;
|
||||
|
||||
|
||||
int fileIsPNG = true;
|
||||
|
||||
// Is this a PNG file?
|
||||
@ -1319,7 +1330,7 @@ bool mixHSI(Common::SeekableReadStream *stream, int x, int y) {
|
||||
return false;
|
||||
}
|
||||
png_init_io(png_ptr, stream); // Tell libpng which file to read
|
||||
png_set_sig_bytes(png_ptr, 8); // 8 bytes already read
|
||||
png_set_sig_bytes(png_ptr, 8);// 8 bytes already read
|
||||
|
||||
png_read_info(png_ptr, info_ptr);
|
||||
|
||||
@ -1394,11 +1405,10 @@ bool mixHSI(Common::SeekableReadStream *stream, int x, int y) {
|
||||
GLubyte *target;
|
||||
int32_t transCol = 63519;
|
||||
|
||||
|
||||
if (fileIsPNG) {
|
||||
unsigned char *row_pointers[realPicHeight];
|
||||
for (int i = 0; i < realPicHeight; i++)
|
||||
row_pointers[i] = backdropTexture + 4 * i * picWidth;
|
||||
row_pointers[i] = backdropTexture + 4 * i * picWidth;
|
||||
|
||||
png_read_image(png_ptr, (png_byte **) row_pointers);
|
||||
png_read_end(png_ptr, NULL);
|
||||
@ -1449,12 +1459,10 @@ bool mixHSI(Common::SeekableReadStream *stream, int x, int y) {
|
||||
|
||||
texImage2D(GL_TEXTURE_2D, 0, GL_RGBA, picWidth, picHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, backdropTexture, tmpTex);
|
||||
|
||||
|
||||
//glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
||||
|
||||
setPixelCoords(true);
|
||||
|
||||
|
||||
int xoffset = 0;
|
||||
while (xoffset < realPicWidth) {
|
||||
int w = (realPicWidth - xoffset < viewportWidth) ? realPicWidth - xoffset : viewportWidth;
|
||||
@ -1473,7 +1481,7 @@ bool mixHSI(Common::SeekableReadStream *stream, int x, int y) {
|
||||
|
||||
glUseProgram(shader.paste);
|
||||
GLint uniform = glGetUniformLocation(shader.paste, "useLightTexture");
|
||||
if (uniform >= 0) glUniform1i(uniform, 0); // No lighting
|
||||
if (uniform >= 0) glUniform1i(uniform, 0);// No lighting
|
||||
|
||||
setPMVMatrix(shader.paste);
|
||||
|
||||
@ -1566,7 +1574,7 @@ void saveCorePNG(Common::WriteStream *stream, GLuint texture, int w, int h) {
|
||||
|
||||
glUseProgram(0);
|
||||
|
||||
for (int i = 0; i < h; i++) {
|
||||
for (int i = 0; i < h; i++) {
|
||||
glReadPixels(viewportOffsetX, viewportOffsetY + i, w, 1, GL_RGBA, GL_UNSIGNED_BYTE, image + xoffset * 4 + (yoffset + i) * 4 * tw);
|
||||
}
|
||||
yoffset += viewportHeight;
|
||||
@ -1592,7 +1600,7 @@ void saveCorePNG(Common::WriteStream *stream, GLuint texture, int w, int h) {
|
||||
png_init_io(png_ptr, writer);
|
||||
|
||||
png_set_IHDR(png_ptr, info_ptr, w, h,
|
||||
8, PNG_COLOR_TYPE_RGBA, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
|
||||
8, PNG_COLOR_TYPE_RGBA, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
|
||||
|
||||
unsigned char *row_pointers[h];
|
||||
|
||||
@ -1650,7 +1658,7 @@ void saveCoreHSI(Common::WriteStream *stream, GLuint texture, int w, int h) {
|
||||
drawQuad(shader.texture, vertices, 1, texCoords);
|
||||
glUseProgram(0);
|
||||
|
||||
for (int i = 0; i < h; i++) {
|
||||
for (int i = 0; i < h; i++) {
|
||||
glReadPixels(viewportOffsetX, viewportOffsetY + i, w, 1, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, image + xoffset + (yoffset + i)*tw);
|
||||
}
|
||||
yoffset += viewportHeight;
|
||||
@ -1703,7 +1711,7 @@ void saveParallaxRecursive(parallaxLayer *me, Common::WriteStream *stream) {
|
||||
saveParallaxRecursive(me->next, stream);
|
||||
putch(1, stream);
|
||||
put2bytes(me->fileNum, stream);
|
||||
put2bytes(me ->fractionX, stream);
|
||||
put2bytes(me->fractionX, stream);
|
||||
put2bytes(me->fractionY, stream);
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,7 @@ static const PlainGameDescriptor sludgeGames[] = {
|
||||
{ "sludge", "Sludge Game" },
|
||||
{ "welcome", "Welcome Example" },
|
||||
{ "welcome2", "Welcome Example 2" },
|
||||
{ "welcomePng", "Welcome For PNG Test" },
|
||||
{ "verbcoin", "Verb Coin" },
|
||||
{ 0, 0 }
|
||||
};
|
||||
@ -76,6 +77,19 @@ static const SludgeGameDescription gameDescriptions[] = {
|
||||
0
|
||||
},
|
||||
|
||||
{
|
||||
{
|
||||
"welcomePng",
|
||||
"",
|
||||
AD_ENTRY1("Welcome.slg", "ff0d7ef0ce73b5503ef6b965928af6d6"),
|
||||
Common::EN_ANY,
|
||||
Common::kPlatformUnknown,
|
||||
ADGF_NO_FLAGS,
|
||||
GUIO0()
|
||||
},
|
||||
0
|
||||
},
|
||||
|
||||
{
|
||||
{
|
||||
"verbcoin",
|
||||
|
@ -74,6 +74,7 @@
|
||||
#include "sludger.h"
|
||||
#include "graphics.h"
|
||||
#include "helpers.h"
|
||||
#include "graphics/surface.h"
|
||||
|
||||
namespace Sludge {
|
||||
|
||||
@ -97,6 +98,7 @@ extern float cameraZoom;
|
||||
extern int specialSettings;
|
||||
extern inputType input;
|
||||
extern variableStack *noStack;
|
||||
extern Graphics::Surface backdropSurface;
|
||||
|
||||
int dialogValue = 0;
|
||||
|
||||
@ -471,6 +473,8 @@ try
|
||||
walkAllPeople();
|
||||
handleInput();
|
||||
sludgeDisplay();
|
||||
g_system->copyRectToScreen(backdropSurface.getPixels(), backdropSurface.pitch, 0, 0, backdropSurface.w, backdropSurface.h);
|
||||
g_system->updateScreen();
|
||||
#if 0
|
||||
Wait_Frame();
|
||||
#endif
|
||||
|
@ -44,6 +44,7 @@ SludgeEngine::SludgeEngine(OSystem *syst, const SludgeGameDescription *gameDesc)
|
||||
DebugMan.addDebugChannel(kSludgeDebugDataLoad, "Data Load", "Data loading debug level");
|
||||
DebugMan.addDebugChannel(kSludgeDebugStackMachine, "Stack Machine", "Stack Machine debug level");
|
||||
DebugMan.addDebugChannel(kSludgeDebugBuiltin, "Built-in", "Built-in debug level");
|
||||
DebugMan.addDebugChannel(kSludgeDebugGraphics, "Graphics", "Graphics debug level");
|
||||
|
||||
// check init
|
||||
debug("SludgeEngine::SludgeEngine");
|
||||
|
@ -41,6 +41,7 @@ enum {
|
||||
kSludgeDebugDataLoad = 1 << 1,
|
||||
kSludgeDebugStackMachine = 1 << 2,
|
||||
kSludgeDebugBuiltin = 1 << 3,
|
||||
kSludgeDebugGraphics = 1 << 4
|
||||
};
|
||||
|
||||
class SludgeEngine : public Engine {
|
||||
|
Loading…
Reference in New Issue
Block a user