mirror of
https://github.com/kevinbentley/Descent3.git
synced 2025-01-22 11:28:56 +00:00
more software renderer code removal
This commit is contained in:
parent
7d38dde25d
commit
fbd6350917
@ -266,11 +266,8 @@ void grSurface::load(char *data, int w, int h, char *pal) {
|
||||
|
||||
switch (ddsfObj.bpp) {
|
||||
case BPP_16:
|
||||
if (Renderer_type == RENDERER_SOFTWARE_8BIT)
|
||||
xlat8_16(data, w, h, pal);
|
||||
else
|
||||
xlat16_16(data, w, h);
|
||||
break;
|
||||
// TODO: This is probably software renderer only?
|
||||
xlat16_16(data, w, h);
|
||||
default:
|
||||
Int3(); // NOT SUPPORTED YET
|
||||
}
|
||||
|
@ -1233,25 +1233,13 @@ void StartFrame(int x, int y, int x2, int y2, bool clear, bool push_on_stack) {
|
||||
last_fov = Render_FOV;
|
||||
}
|
||||
|
||||
// for software renderers perform frame buffer lock.
|
||||
if (Renderer_type == RENDERER_SOFTWARE_16BIT) {
|
||||
int w, h, color_depth, pitch;
|
||||
ubyte *data;
|
||||
|
||||
ddvid_GetVideoProperties(&w, &h, &color_depth);
|
||||
ddvid_LockFrameBuffer(&data, &pitch);
|
||||
rend_SetSoftwareParameters(ddvid_GetAspectRatio(), w, h, pitch, data);
|
||||
}
|
||||
|
||||
if (push_on_stack) {
|
||||
// push this frame onto the stack
|
||||
FramePush(x, y, x2, y2, clear);
|
||||
}
|
||||
|
||||
rend_StartFrame(x, y, x2, y2);
|
||||
if (Renderer_type == RENDERER_SOFTWARE_16BIT && clear) {
|
||||
rend_FillRect(GR_RGB(0, 0, 0), x, y, x2, y2);
|
||||
}
|
||||
|
||||
grtext_SetParameters(0, 0, (x2 - x), (y2 - y));
|
||||
}
|
||||
|
||||
@ -1273,11 +1261,6 @@ void EndFrame() {
|
||||
//@@Frame_inside = false;
|
||||
rend_EndFrame();
|
||||
|
||||
// for software renderers perform unlock on frame buffer.
|
||||
if (Renderer_type == RENDERER_SOFTWARE_16BIT) {
|
||||
ddvid_UnlockFrameBuffer();
|
||||
}
|
||||
|
||||
// pop off frame
|
||||
int x1, x2, y1, y2;
|
||||
bool clear;
|
||||
|
@ -1484,12 +1484,6 @@ void LoadGameSettings() {
|
||||
int len = _MAX_PATH;
|
||||
Database->read("Default_pilot", Default_pilot, &len);
|
||||
|
||||
// If preferred renderer set to software, force it to be glide
|
||||
if ((PreferredRenderer == RENDERER_SOFTWARE_8BIT) || (PreferredRenderer == RENDERER_SOFTWARE_16BIT)) {
|
||||
Int3(); // Warning: rederer was set to Software. Ok to ignore this.
|
||||
PreferredRenderer = RENDERER_OPENGL;
|
||||
}
|
||||
|
||||
// Now that we have read in all the data, set the detail level if it is a predef setting (custom is ignored in
|
||||
// function)
|
||||
|
||||
|
@ -322,69 +322,6 @@ int bm_tga_read_outrage_compressed16(CFILE *infile, int n, int num_mips, int typ
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Reads a 8bit bitmap into memory
|
||||
// Note: Even if we're are not using an 8bit renderer this routine still needs
|
||||
// to be called due to the fact that we need to 'move' our position in the file
|
||||
// We also need to extract the palette number
|
||||
|
||||
/*int bm_tga_read_outrage_compressed8 (CFILE *infile,int n)
|
||||
{
|
||||
|
||||
ubyte pal_num=tga_read_byte ();
|
||||
ubyte num_mips=tga_read_byte ();
|
||||
|
||||
ASSERT (pal_num>=0 && pal_num<=MAX_BITMAP_PALETTES);
|
||||
if (num_mips>1)
|
||||
GameBitmaps[n].mipmapped=1;
|
||||
|
||||
GameBitmaps[n].palette_num=pal_num;
|
||||
|
||||
for (int m=0;m<num_mips;m++)
|
||||
{
|
||||
int width=bm_w(n,m);
|
||||
int height=bm_h(n,m);
|
||||
|
||||
int total=height * width;
|
||||
int count=0;
|
||||
ubyte *data;
|
||||
|
||||
if (Renderer_type==RENDERER_SOFTWARE_8BIT)
|
||||
data=bm_data8 (n,m);
|
||||
else
|
||||
data=NULL;
|
||||
|
||||
while (count!=total)
|
||||
{
|
||||
ASSERT (count<total);
|
||||
|
||||
ubyte command=tga_read_byte ();
|
||||
if (command==0) // next pixel is raw
|
||||
{
|
||||
ubyte pixel=tga_read_byte ();
|
||||
int i=count/width;
|
||||
int t=count%width;
|
||||
if (Renderer_type==RENDERER_SOFTWARE_8BIT)
|
||||
data[i*256+t]=pixel;
|
||||
count++;
|
||||
}
|
||||
else if (command>=2 && command<=250) // next pixel is run of pixels
|
||||
{
|
||||
ubyte pixel=tga_read_byte ();
|
||||
for (int k=0;k<command;k++)
|
||||
{
|
||||
int i=count/width;
|
||||
int t=count%width;
|
||||
if (Renderer_type==RENDERER_SOFTWARE_8BIT)
|
||||
data[i*256+t]=pixel;
|
||||
count++;
|
||||
}
|
||||
}
|
||||
else Int3(); // bad compression run
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}*/
|
||||
|
||||
// Loads a tga or ogf file into a bitmap...returns handle to bm or -1 on error
|
||||
int bm_tga_alloc_file(CFILE *infile, char *name, int format) {
|
||||
ubyte image_id_len, color_map_type, image_type, pixsize, descriptor;
|
||||
|
@ -100,9 +100,6 @@ bool ddvidfs_SetVideoMode(int w, int h, int color_depth, bool paged);
|
||||
// closes video mode for fs
|
||||
void ddvidfs_CloseVideo();
|
||||
|
||||
// retrieves screen information for fullscreen version
|
||||
void ddvidfs_GetVideoProperties(int *w, int *h, int *color_depth);
|
||||
|
||||
// flips screen if there's a back buffer
|
||||
void ddvidfs_VideoFlip();
|
||||
|
||||
@ -121,9 +118,6 @@ bool ddvidwin_SetVideoMode(int w, int h, int color_depth, bool paged, bool resch
|
||||
// closes video mode for fs
|
||||
void ddvidwin_CloseVideo();
|
||||
|
||||
// retrieves screen information for windowed version
|
||||
void ddvidwin_GetVideoProperties(int *w, int *h, int *color_depth);
|
||||
|
||||
// flips screen if there's a back buffer
|
||||
void ddvidwin_VideoFlip();
|
||||
|
||||
|
@ -192,15 +192,6 @@ void ddvidfs_CloseVideo() {
|
||||
}
|
||||
}
|
||||
|
||||
// retrieves screen information for fullscreen version
|
||||
void ddvidfs_GetVideoProperties(int *w, int *h, int *color_depth) {
|
||||
ASSERT(DDVideo_info.curmode > -1);
|
||||
|
||||
*w = DDVideo_info.DDModes[DDVideo_info.curmode].dwWidth;
|
||||
*h = DDVideo_info.DDModes[DDVideo_info.curmode].dwHeight;
|
||||
*color_depth = (int)DDVideo_info.DDModes[DDVideo_info.curmode].ddpfPixelFormat.dwRGBBitCount;
|
||||
}
|
||||
|
||||
// flips screen if there's a back buffer
|
||||
void ddvidfs_VideoFlip() {
|
||||
if (DDVideo_info.lpDDSBack)
|
||||
|
@ -188,126 +188,3 @@ bool ddvid_SetVideoMode(int w, int h, int color_depth, bool paged) {
|
||||
|
||||
// sets screen handle
|
||||
void ddvid_SetVideoHandle(unsigned handle) { DDVideo_info.hVidWnd = (HWND)handle; }
|
||||
|
||||
// retrieves screen information
|
||||
void ddvid_GetVideoProperties(int *w, int *h, int *color_depth) {
|
||||
ASSERT(DDVideo_init);
|
||||
|
||||
switch (DDVideo_info.subsystem) {
|
||||
case VID_GDIF_SUBSYSTEM:
|
||||
case VID_GDI_SUBSYSTEM:
|
||||
ddvidwin_GetVideoProperties(w, h, color_depth);
|
||||
break;
|
||||
case VID_GDIX_SUBSYSTEM:
|
||||
ddvidfs_GetVideoProperties(w, h, color_depth);
|
||||
break;
|
||||
case VID_DX_SUBSYSTEM:
|
||||
ddvidfs_GetVideoProperties(w, h, color_depth);
|
||||
break;
|
||||
default:
|
||||
Int3();
|
||||
}
|
||||
}
|
||||
|
||||
// retrieves screen aspect ratio.
|
||||
float ddvid_GetAspectRatio() {
|
||||
float aspect_ratio = (float)((3.0 * GetSystemMetrics(SM_CXSCREEN)) / (4.0 * GetSystemMetrics(SM_CYSCREEN)));
|
||||
return aspect_ratio;
|
||||
}
|
||||
|
||||
// only available to DD_ACCESS libraries.
|
||||
// dd_obj is the DIRECTDRAW OBJECT for the system.
|
||||
// dds_obj is the DIRECTDRAWSURFACE OBJECT for the screen
|
||||
void ddvid_GetVideoDDrawProps(uint *dd_obj, uint *dds_obj) {
|
||||
switch (DDVideo_info.subsystem) {
|
||||
case VID_GDIX_SUBSYSTEM:
|
||||
*dd_obj = NULL;
|
||||
break;
|
||||
case VID_DX_SUBSYSTEM:
|
||||
*dd_obj = ddvidfs_GetDirectDrawObject();
|
||||
break;
|
||||
}
|
||||
|
||||
*dds_obj = NULL;
|
||||
}
|
||||
|
||||
// flips screen if there's a back buffer
|
||||
void ddvid_VideoFlip() {
|
||||
switch (DDVideo_info.subsystem) {
|
||||
case VID_GDIF_SUBSYSTEM:
|
||||
case VID_GDI_SUBSYSTEM:
|
||||
ddvidwin_VideoFlip();
|
||||
break;
|
||||
case VID_GDIX_SUBSYSTEM:
|
||||
ddvidwin_VideoFlip();
|
||||
break;
|
||||
case VID_DX_SUBSYSTEM:
|
||||
ddvidfs_VideoFlip();
|
||||
break;
|
||||
default:
|
||||
Int3();
|
||||
}
|
||||
}
|
||||
|
||||
// retreives frame buffer info for a video mode.
|
||||
void ddvid_LockFrameBuffer(ubyte **data, int *pitch) {
|
||||
// locks a direct draw paged surface or a paged window. unpaged buffers won't lock.
|
||||
ASSERT(DDVideo_init);
|
||||
|
||||
switch (DDVideo_info.subsystem) {
|
||||
case VID_GDIF_SUBSYSTEM:
|
||||
case VID_GDI_SUBSYSTEM: {
|
||||
*data = (ubyte *)DDVideo_info.gdi.data;
|
||||
*pitch = DDVideo_info.gdi.pitch;
|
||||
} break;
|
||||
case VID_GDIX_SUBSYSTEM: {
|
||||
*data = (ubyte *)DDVideo_info.gdi.data;
|
||||
*pitch = DDVideo_info.gdi.pitch;
|
||||
} break;
|
||||
case VID_DX_SUBSYSTEM: {
|
||||
HRESULT hres;
|
||||
DDSURFACEDESC ddsd;
|
||||
|
||||
memset(&ddsd, 0, sizeof(ddsd));
|
||||
ddsd.dwSize = sizeof(ddsd);
|
||||
|
||||
if (DDVideo_info.lpDDSBack) {
|
||||
hres = DDVideo_info.lpDDSBack->Lock(NULL, &ddsd, DDLOCK_WAIT, NULL);
|
||||
if (hres != DD_OK) {
|
||||
Error("Unable to set lock DirectDraw surface(%d)\n", LOWORD(hres));
|
||||
}
|
||||
*pitch = (int)ddsd.lPitch;
|
||||
*data = (ubyte *)ddsd.lpSurface;
|
||||
DDVideo_info.surf_data = (char *)(*data);
|
||||
} else {
|
||||
*data = NULL;
|
||||
*pitch = 0;
|
||||
}
|
||||
} break;
|
||||
default:
|
||||
Int3();
|
||||
}
|
||||
}
|
||||
|
||||
void ddvid_UnlockFrameBuffer() {
|
||||
ASSERT(DDVideo_init);
|
||||
|
||||
switch (DDVideo_info.subsystem) {
|
||||
case VID_GDIF_SUBSYSTEM:
|
||||
case VID_GDI_SUBSYSTEM:
|
||||
case VID_GDIX_SUBSYSTEM:
|
||||
break;
|
||||
case VID_DX_SUBSYSTEM: {
|
||||
HRESULT hres;
|
||||
|
||||
if (DDVideo_info.lpDDSBack) {
|
||||
hres = DDVideo_info.lpDDSBack->Unlock(DDVideo_info.surf_data);
|
||||
if (hres != DD_OK)
|
||||
Error("Unable to unlock DirectDraw surface(%d)\n", LOWORD(hres));
|
||||
DDVideo_info.surf_data = NULL;
|
||||
}
|
||||
} break;
|
||||
default:
|
||||
Int3();
|
||||
}
|
||||
}
|
||||
|
@ -153,59 +153,3 @@ bool ddvid_SetVideoMode(int w, int h, int color_depth, bool paged) {
|
||||
|
||||
// sets screen handle
|
||||
void ddvid_SetVideoHandle(unsigned handle) {}
|
||||
|
||||
// retrieves screen information
|
||||
void ddvid_GetVideoProperties(int *w, int *h, int *color_depth) {
|
||||
*w = 640;
|
||||
*h = 480;
|
||||
*color_depth = 16;
|
||||
|
||||
/*
|
||||
ASSERT(DDVideo_init);
|
||||
if(!DDVideo_info.info){
|
||||
*w = *h = *color_depth = 0;
|
||||
return;
|
||||
}
|
||||
*w = DDVideo_info.info->width;
|
||||
*h = DDVideo_info.info->height;
|
||||
*color_depth = DDVideo_info.info->bytesperpixel;
|
||||
*/
|
||||
}
|
||||
|
||||
// retrieves screen aspect ratio.
|
||||
float ddvid_GetAspectRatio() {
|
||||
/*
|
||||
float aspect_ratio = (float)((3.0 * vga_getxdim())/(4.0 * vga_getydim()));
|
||||
return aspect_ratio;
|
||||
*/
|
||||
return 0.75f;
|
||||
}
|
||||
|
||||
// flips screen if there's a back buffer
|
||||
void ddvid_VideoFlip() {
|
||||
if (!DDVideo_info.paged)
|
||||
return;
|
||||
// vga_flip();
|
||||
}
|
||||
|
||||
// retreives frame buffer info for a video mode.
|
||||
void ddvid_LockFrameBuffer(ubyte **data, int *pitch) {
|
||||
*data = NULL;
|
||||
*pitch = 0;
|
||||
|
||||
/*
|
||||
ASSERT(DDVideo_init);
|
||||
if(!DDVideo_info.info){
|
||||
*data = NULL;
|
||||
*pitch = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
// *data = vga_getgraphmem();
|
||||
*pitch = DDVideo_info.info->linewidth;
|
||||
*/
|
||||
}
|
||||
|
||||
void ddvid_UnlockFrameBuffer() {
|
||||
// ASSERT(DDVideo_init);
|
||||
}
|
||||
|
25
lib/ddvid.h
25
lib/ddvid.h
@ -59,29 +59,4 @@ bool ddvid_SetVideoMode(int w, int h, int color_depth, bool paged);
|
||||
// sets screen handle
|
||||
void ddvid_SetVideoHandle(unsigned handle);
|
||||
|
||||
// retrieves screen information
|
||||
void ddvid_GetVideoProperties(int *w, int *h, int *color_depth);
|
||||
|
||||
// retrieves screen aspect ratio.
|
||||
float ddvid_GetAspectRatio();
|
||||
|
||||
// retreives frame buffer info for a video mode.
|
||||
void ddvid_LockFrameBuffer(ubyte **data, int *pitch);
|
||||
void ddvid_UnlockFrameBuffer();
|
||||
|
||||
// flips screen if there's a back buffer
|
||||
void ddvid_VideoFlip();
|
||||
|
||||
// only available to DD_ACCESS libraries.
|
||||
#if defined(DD_ACCESS_RING)
|
||||
#if defined(WIN32)
|
||||
|
||||
// dd_obj is the DIRECTDRAW OBJECT for the system.
|
||||
// dds_obj is the DIRECTDRAWSURFACE OBJECT for the screen
|
||||
void ddvid_GetVideoDDrawProps(uint *dd_obj, uint *dds_obj);
|
||||
|
||||
#endif // WIN32
|
||||
|
||||
#endif // DD_ACCESS
|
||||
|
||||
#endif
|
||||
|
@ -316,8 +316,6 @@ extern int Triangles_drawn;
|
||||
|
||||
// Is this hardware or software rendered?
|
||||
typedef enum {
|
||||
RENDERER_SOFTWARE_8BIT,
|
||||
RENDERER_SOFTWARE_16BIT,
|
||||
RENDERER_OPENGL,
|
||||
RENDERER_DIRECT3D,
|
||||
RENDERER_GLIDE,
|
||||
|
@ -100,16 +100,6 @@ static int m_UITextFlags = 0;
|
||||
// DRAWING PRIMATIVE FUNCTIONS
|
||||
|
||||
void ui_StartDraw(int left, int top, int right, int bottom) {
|
||||
// for software renderers perform frame buffer lock.
|
||||
if (Renderer_type == RENDERER_SOFTWARE_16BIT) {
|
||||
int w, h, color_depth, pitch;
|
||||
ubyte *data;
|
||||
|
||||
ddvid_GetVideoProperties(&w, &h, &color_depth);
|
||||
ddvid_LockFrameBuffer(&data, &pitch);
|
||||
rend_SetSoftwareParameters(ddvid_GetAspectRatio(), w, h, pitch, data);
|
||||
}
|
||||
|
||||
m_UIDrawLeft = left;
|
||||
m_UIDrawTop = top;
|
||||
m_UIDrawRight = right;
|
||||
@ -123,11 +113,6 @@ void ui_StartDraw(int left, int top, int right, int bottom) {
|
||||
void ui_EndDraw() {
|
||||
grtext_Flush();
|
||||
rend_EndFrame();
|
||||
|
||||
// for software renderers perform unlock on frame buffer.
|
||||
if (Renderer_type == RENDERER_SOFTWARE_16BIT) {
|
||||
ddvid_UnlockFrameBuffer();
|
||||
}
|
||||
}
|
||||
|
||||
// sets text clipping within the startdraw region
|
||||
|
Loading…
Reference in New Issue
Block a user