rasterize: perspective correct material colors--not doing this was a bug. optionally interpolate material colors when clipping. the hardware doesnt do this, but it looks ugly on the hardware and unless I am debugging I want it done.
This commit is contained in:
parent
ce7cb192ed
commit
1226363d5d
|
@ -45,6 +45,8 @@
|
||||||
|
|
||||||
//#define USE_REAL_BIOS
|
//#define USE_REAL_BIOS
|
||||||
|
|
||||||
|
TCommonSettings CommonSettings;
|
||||||
|
|
||||||
static BOOL LidClosed = FALSE;
|
static BOOL LidClosed = FALSE;
|
||||||
static u8 countLid = 0;
|
static u8 countLid = 0;
|
||||||
char pathToROM[MAX_PATH];
|
char pathToROM[MAX_PATH];
|
||||||
|
|
|
@ -274,6 +274,14 @@ inline u32 NDS_exec(s32 nb) { return NDS_exec<false>(nb); }
|
||||||
|
|
||||||
int NDS_WriteBMP_32bppBuffer(int width, int height, const void* buf, const char *filename);
|
int NDS_WriteBMP_32bppBuffer(int width, int height, const void* buf, const char *filename);
|
||||||
|
|
||||||
|
extern struct TCommonSettings {
|
||||||
|
TCommonSettings()
|
||||||
|
: HighResolutionInterpolateColor(true)
|
||||||
|
{}
|
||||||
|
bool HighResolutionInterpolateColor;
|
||||||
|
} CommonSettings;
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -774,23 +774,25 @@ static void OGLRender()
|
||||||
VERT *vert1 = &gfx3d.vertlist->list[poly->vertIndexes[j]];
|
VERT *vert1 = &gfx3d.vertlist->list[poly->vertIndexes[j]];
|
||||||
VERT *vert2 = &gfx3d.vertlist->list[poly->vertIndexes[j+1]];
|
VERT *vert2 = &gfx3d.vertlist->list[poly->vertIndexes[j+1]];
|
||||||
|
|
||||||
|
u8 alpha = material_5bit_to_8bit[poly->getAlpha()];
|
||||||
|
|
||||||
u8 color0[4] = {
|
u8 color0[4] = {
|
||||||
material_5bit_to_8bit[vert0->color[0]],
|
material_5bit_to_8bit[vert0->color[0]],
|
||||||
material_5bit_to_8bit[vert0->color[1]],
|
material_5bit_to_8bit[vert0->color[1]],
|
||||||
material_5bit_to_8bit[vert0->color[2]],
|
material_5bit_to_8bit[vert0->color[2]],
|
||||||
material_5bit_to_8bit[vert0->color[3]]
|
alpha
|
||||||
};
|
};
|
||||||
u8 color1[4] = {
|
u8 color1[4] = {
|
||||||
material_5bit_to_8bit[vert1->color[0]],
|
material_5bit_to_8bit[vert1->color[0]],
|
||||||
material_5bit_to_8bit[vert1->color[1]],
|
material_5bit_to_8bit[vert1->color[1]],
|
||||||
material_5bit_to_8bit[vert1->color[2]],
|
material_5bit_to_8bit[vert1->color[2]],
|
||||||
material_5bit_to_8bit[vert1->color[3]]
|
alpha
|
||||||
};
|
};
|
||||||
u8 color2[4] = {
|
u8 color2[4] = {
|
||||||
material_5bit_to_8bit[vert2->color[0]],
|
material_5bit_to_8bit[vert2->color[0]],
|
||||||
material_5bit_to_8bit[vert2->color[1]],
|
material_5bit_to_8bit[vert2->color[1]],
|
||||||
material_5bit_to_8bit[vert2->color[2]],
|
material_5bit_to_8bit[vert2->color[2]],
|
||||||
material_5bit_to_8bit[vert2->color[3]]
|
alpha
|
||||||
};
|
};
|
||||||
|
|
||||||
glTexCoord2fv(vert0->texcoord);
|
glTexCoord2fv(vert0->texcoord);
|
||||||
|
|
|
@ -75,6 +75,8 @@ struct POLY {
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int getAlpha() { return (polyAttr>>16)&0x1F; }
|
||||||
};
|
};
|
||||||
|
|
||||||
#define POLYLIST_SIZE 100000
|
#define POLYLIST_SIZE 100000
|
||||||
|
@ -84,16 +86,16 @@ struct POLYLIST {
|
||||||
int count;
|
int count;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*#define PROJLIST_SIZE 1000
|
|
||||||
struct PROJLIST {
|
|
||||||
float projMatrix[PROJLIST_SIZE][16];
|
|
||||||
int count;
|
|
||||||
};*/
|
|
||||||
|
|
||||||
struct VERT {
|
struct VERT {
|
||||||
float coord[4];
|
float coord[4];
|
||||||
float texcoord[2];
|
float texcoord[2];
|
||||||
u8 color[4];
|
u8 color[3];
|
||||||
|
float fcolor[3];
|
||||||
|
void color_to_float() {
|
||||||
|
fcolor[0] = color[0];
|
||||||
|
fcolor[1] = color[1];
|
||||||
|
fcolor[2] = color[2];
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#define VERTLIST_SIZE 400000
|
#define VERTLIST_SIZE 400000
|
||||||
|
@ -130,7 +132,6 @@ struct GFX3D
|
||||||
|
|
||||||
POLYLIST* polylist;
|
POLYLIST* polylist;
|
||||||
VERTLIST* vertlist;
|
VERTLIST* vertlist;
|
||||||
//PROJLIST* projlist;
|
|
||||||
int indexlist[POLYLIST_SIZE];
|
int indexlist[POLYLIST_SIZE];
|
||||||
|
|
||||||
BOOL wbuffer, sortmode;
|
BOOL wbuffer, sortmode;
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
#include "render3D.h"
|
#include "render3D.h"
|
||||||
#include "gfx3d.h"
|
#include "gfx3d.h"
|
||||||
#include "texcache.h"
|
#include "texcache.h"
|
||||||
|
#include "NDSSystem.h"
|
||||||
|
|
||||||
using std::min;
|
using std::min;
|
||||||
using std::max;
|
using std::max;
|
||||||
|
@ -288,6 +289,7 @@ struct Shader
|
||||||
dst.color.components.g = modulate_table[texColor.components.g][materialColor.components.g];
|
dst.color.components.g = modulate_table[texColor.components.g][materialColor.components.g];
|
||||||
dst.color.components.b = modulate_table[texColor.components.b][materialColor.components.b];
|
dst.color.components.b = modulate_table[texColor.components.b][materialColor.components.b];
|
||||||
dst.color.components.a = modulate_table[texColor.components.a][materialColor.components.a];
|
dst.color.components.a = modulate_table[texColor.components.a][materialColor.components.a];
|
||||||
|
//debugging tricks
|
||||||
//dst.color = materialColor;
|
//dst.color = materialColor;
|
||||||
//dst.color.color = polynum*8+8;
|
//dst.color.color = polynum*8+8;
|
||||||
//dst.color.components.a = 31;
|
//dst.color.components.a = 31;
|
||||||
|
@ -462,9 +464,9 @@ static void triangle_from_devmaster()
|
||||||
float fx1 = verts[0]->coord[0], fy1 = verts[0]->coord[1], fz1 = verts[0]->coord[2];
|
float fx1 = verts[0]->coord[0], fy1 = verts[0]->coord[1], fz1 = verts[0]->coord[2];
|
||||||
float fx2 = verts[1]->coord[0], fy2 = verts[1]->coord[1], fz2 = verts[1]->coord[2];
|
float fx2 = verts[1]->coord[0], fy2 = verts[1]->coord[1], fz2 = verts[1]->coord[2];
|
||||||
float fx3 = verts[2]->coord[0], fy3 = verts[2]->coord[1], fz3 = verts[2]->coord[2];
|
float fx3 = verts[2]->coord[0], fy3 = verts[2]->coord[1], fz3 = verts[2]->coord[2];
|
||||||
u8 r1 = verts[0]->color[0], g1 = verts[0]->color[1], b1 = verts[0]->color[2], a1 = verts[0]->color[3];
|
float r1 = verts[0]->fcolor[0], g1 = verts[0]->fcolor[1], b1 = verts[0]->fcolor[2];
|
||||||
u8 r2 = verts[1]->color[0], g2 = verts[1]->color[1], b2 = verts[1]->color[2], a2 = verts[1]->color[3];
|
float r2 = verts[1]->fcolor[0], g2 = verts[1]->fcolor[1], b2 = verts[1]->fcolor[2];
|
||||||
u8 r3 = verts[2]->color[0], g3 = verts[2]->color[1], b3 = verts[2]->color[2], a3 = verts[2]->color[3];
|
float r3 = verts[2]->fcolor[0], g3 = verts[2]->fcolor[1], b3 = verts[2]->fcolor[2];
|
||||||
float u1 = verts[0]->texcoord[0], v1 = verts[0]->texcoord[1];
|
float u1 = verts[0]->texcoord[0], v1 = verts[0]->texcoord[1];
|
||||||
float u2 = verts[1]->texcoord[0], v2 = verts[1]->texcoord[1];
|
float u2 = verts[1]->texcoord[0], v2 = verts[1]->texcoord[1];
|
||||||
float u3 = verts[2]->texcoord[0], v3 = verts[2]->texcoord[1];
|
float u3 = verts[2]->texcoord[0], v3 = verts[2]->texcoord[1];
|
||||||
|
@ -555,13 +557,20 @@ static void triangle_from_devmaster()
|
||||||
shader.invw = i_invw.Z;
|
shader.invw = i_invw.Z;
|
||||||
shader.invu = i_tex_invu.Z;
|
shader.invu = i_tex_invu.Z;
|
||||||
shader.invv = i_tex_invv.Z;
|
shader.invv = i_tex_invv.Z;
|
||||||
|
|
||||||
|
//perspective-correct the colors
|
||||||
|
float r = (i_color_r.Z / i_invw.Z) + 0.5f;
|
||||||
|
float g = (i_color_g.Z / i_invw.Z) + 0.5f;
|
||||||
|
float b = (i_color_b.Z / i_invw.Z) + 0.5f;
|
||||||
|
|
||||||
//this is a HACK:
|
//this is a HACK:
|
||||||
//we are being very sloppy with our interpolation precision right now
|
//we are being very sloppy with our interpolation precision right now
|
||||||
//and rather than fix it, i just want to clamp it
|
//and rather than fix it, i just want to clamp it
|
||||||
|
shader.materialColor.components.r = max(0,min(31,(int)r));
|
||||||
|
shader.materialColor.components.g = max(0,min(31,(int)g));
|
||||||
|
shader.materialColor.components.b = max(0,min(31,(int)b));
|
||||||
|
|
||||||
shader.materialColor.components.a = polyAttr.alpha;
|
shader.materialColor.components.a = polyAttr.alpha;
|
||||||
shader.materialColor.components.r = max(0,min(31,i_color_r.cur()));
|
|
||||||
shader.materialColor.components.g = max(0,min(31,i_color_g.cur()));
|
|
||||||
shader.materialColor.components.b = max(0,min(31,i_color_b.cur()));
|
|
||||||
|
|
||||||
//pixel shader
|
//pixel shader
|
||||||
Fragment shaderOutput;
|
Fragment shaderOutput;
|
||||||
|
@ -761,10 +770,20 @@ static VERT clipPoint(VERT* inside, VERT* outside, int coord, int which)
|
||||||
|
|
||||||
|
|
||||||
#define INTERP(X) ret . X = interpolate(t, inside-> X ,outside-> X )
|
#define INTERP(X) ret . X = interpolate(t, inside-> X ,outside-> X )
|
||||||
INTERP(color[0]); INTERP(color[1]); INTERP(color[2]);
|
|
||||||
INTERP(coord[0]); INTERP(coord[1]); INTERP(coord[2]); INTERP(coord[3]);
|
INTERP(coord[0]); INTERP(coord[1]); INTERP(coord[2]); INTERP(coord[3]);
|
||||||
INTERP(texcoord[0]); INTERP(texcoord[1]);
|
INTERP(texcoord[0]); INTERP(texcoord[1]);
|
||||||
|
|
||||||
|
if(CommonSettings.HighResolutionInterpolateColor)
|
||||||
|
{
|
||||||
|
INTERP(fcolor[0]); INTERP(fcolor[1]); INTERP(fcolor[2]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
INTERP(color[0]); INTERP(color[1]); INTERP(color[2]);
|
||||||
|
ret.color_to_float();
|
||||||
|
}
|
||||||
|
|
||||||
//this seems like a prudent measure to make sure that math doesnt make a point pop back out
|
//this seems like a prudent measure to make sure that math doesnt make a point pop back out
|
||||||
//of the clip volume through interpolation
|
//of the clip volume through interpolation
|
||||||
if(which==-1)
|
if(which==-1)
|
||||||
|
@ -901,7 +920,9 @@ static void SoftRastRender()
|
||||||
for(int i=0;i<256*192;i++)
|
for(int i=0;i<256*192;i++)
|
||||||
screen[i] = clearFragment;
|
screen[i] = clearFragment;
|
||||||
|
|
||||||
//printf("%d\n",gfx3d.wbuffer?1:0);
|
//convert colors to float to get more precision in case we need it
|
||||||
|
for(int i=0;i<gfx3d.vertlist->count;i++)
|
||||||
|
gfx3d.vertlist->list[i].color_to_float();
|
||||||
|
|
||||||
//submit all polys to clipper
|
//submit all polys to clipper
|
||||||
clippedPolyCounter = 0;
|
clippedPolyCounter = 0;
|
||||||
|
@ -930,6 +951,11 @@ static void SoftRastRender()
|
||||||
//vert.coord[1] = max(0.0f,min(1.0f,vert.coord[1]));
|
//vert.coord[1] = max(0.0f,min(1.0f,vert.coord[1]));
|
||||||
//vert.coord[2] = max(0.0f,min(1.0f,vert.coord[2]));
|
//vert.coord[2] = max(0.0f,min(1.0f,vert.coord[2]));
|
||||||
|
|
||||||
|
//perspective-correct the colors
|
||||||
|
vert.fcolor[0] /= vert.coord[3];
|
||||||
|
vert.fcolor[1] /= vert.coord[3];
|
||||||
|
vert.fcolor[2] /= vert.coord[3];
|
||||||
|
|
||||||
//viewport transformation
|
//viewport transformation
|
||||||
vert.coord[0] *= 256;
|
vert.coord[0] *= 256;
|
||||||
vert.coord[1] *= 192;
|
vert.coord[1] *= 192;
|
||||||
|
|
|
@ -1347,6 +1347,7 @@ int WINAPI WinMain (HINSTANCE hThisInstance,
|
||||||
}
|
}
|
||||||
|
|
||||||
cur3DCore = GetPrivateProfileInt("3D", "Renderer", GPU3D_OPENGL, IniName);
|
cur3DCore = GetPrivateProfileInt("3D", "Renderer", GPU3D_OPENGL, IniName);
|
||||||
|
CommonSettings.HighResolutionInterpolateColor = GetPrivateProfileInt("3D", "HighResolutionInterpolateColor", 1, IniName);
|
||||||
NDS_3D_ChangeCore(cur3DCore);
|
NDS_3D_ChangeCore(cur3DCore);
|
||||||
|
|
||||||
#ifdef BETA_VERSION
|
#ifdef BETA_VERSION
|
||||||
|
@ -2651,6 +2652,8 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
CheckDlgButton(hw,IDC_INTERPOLATECOLOR,CommonSettings.HighResolutionInterpolateColor?1:0);
|
||||||
|
|
||||||
for(i = 0; core3DList[i] != NULL; i++)
|
for(i = 0; core3DList[i] != NULL; i++)
|
||||||
{
|
{
|
||||||
ComboBox_AddString(GetDlgItem(hw, IDC_3DCORE), core3DList[i]->name);
|
ComboBox_AddString(GetDlgItem(hw, IDC_3DCORE), core3DList[i]->name);
|
||||||
|
@ -2665,8 +2668,10 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp)
|
||||||
{
|
{
|
||||||
case IDOK:
|
case IDOK:
|
||||||
{
|
{
|
||||||
|
CommonSettings.HighResolutionInterpolateColor = IsDlgButtonChecked(hw,IDC_INTERPOLATECOLOR);
|
||||||
NDS_3D_ChangeCore(ComboBox_GetCurSel(GetDlgItem(hw, IDC_3DCORE)));
|
NDS_3D_ChangeCore(ComboBox_GetCurSel(GetDlgItem(hw, IDC_3DCORE)));
|
||||||
WritePrivateProfileInt("3D", "Renderer", cur3DCore, IniName);
|
WritePrivateProfileInt("3D", "Renderer", cur3DCore, IniName);
|
||||||
|
WritePrivateProfileInt("3D", "HighResolutionInterpolateColor", CommonSettings.HighResolutionInterpolateColor?1:0, IniName);
|
||||||
}
|
}
|
||||||
case IDCANCEL:
|
case IDCANCEL:
|
||||||
{
|
{
|
||||||
|
|
|
@ -13,4 +13,6 @@ void Display();
|
||||||
void Pause();
|
void Pause();
|
||||||
void FrameAdvance();
|
void FrameAdvance();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -493,4 +493,4 @@
|
||||||
#define IDC_HKCOMBO 60077
|
#define IDC_HKCOMBO 60077
|
||||||
#define IDD_KEYCUSTOM 60078
|
#define IDD_KEYCUSTOM 60078
|
||||||
#define IDM_HOTKEY_CONFIG 60079
|
#define IDM_HOTKEY_CONFIG 60079
|
||||||
|
#define IDC_INTERPOLATECOLOR 70000
|
||||||
|
|
|
@ -532,46 +532,52 @@ END
|
||||||
// Dialog resources
|
// Dialog resources
|
||||||
//
|
//
|
||||||
LANGUAGE LANG_DANISH, SUBLANG_DANISH_DENMARK
|
LANGUAGE LANG_DANISH, SUBLANG_DANISH_DENMARK
|
||||||
IDD_3DSETTINGS DIALOG 0, 0, 174, 73
|
IDD_3DSETTINGS DIALOG 0, 0, 174, 120
|
||||||
STYLE DS_MODALFRAME | DS_SETFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP | WS_SYSMENU
|
STYLE DS_MODALFRAME | DS_SETFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP | WS_SYSMENU
|
||||||
CAPTION "3D settings"
|
CAPTION "3D settings"
|
||||||
FONT 8, "MS Sans Serif"
|
FONT 8, "MS Sans Serif"
|
||||||
BEGIN
|
BEGIN
|
||||||
DEFPUSHBUTTON "OK", IDOK, 62, 52, 50, 14, BS_DEFPUSHBUTTON
|
DEFPUSHBUTTON "OK", IDOK, 62, 92, 50, 14, BS_DEFPUSHBUTTON
|
||||||
PUSHBUTTON "Cancel", IDCANCEL, 117, 52, 50, 14, BS_PUSHBUTTON
|
PUSHBUTTON "Cancel", IDCANCEL, 117, 92, 50, 14, BS_PUSHBUTTON
|
||||||
PUSHBUTTON "Default", IDC_DEFAULT, 7, 52, 50, 14, BS_PUSHBUTTON
|
PUSHBUTTON "Default", IDC_DEFAULT, 7, 92, 50, 14, BS_PUSHBUTTON
|
||||||
GROUPBOX "Renderer:", IDC_STATIC, 7, 7, 160, 39
|
GROUPBOX "Renderer:", IDC_STATIC, 7, 7, 160, 39
|
||||||
COMBOBOX IDC_3DCORE, 15, 23, 146, 138, WS_TABSTOP | WS_VSCROLL | WS_TABSTOP | CBS_DROPDOWNLIST
|
COMBOBOX IDC_3DCORE, 15, 23, 146, 138, WS_TABSTOP | WS_VSCROLL | WS_TABSTOP | CBS_DROPDOWNLIST
|
||||||
|
AUTOCHECKBOX "Unrealistically High-Precision Color Interpolation", IDC_INTERPOLATECOLOR, 9, 55, 165, 10, BS_AUTOCHECKBOX
|
||||||
|
LTEXT "(Presently only effective for SoftRasterizer)", IDC_STATIC, 21, 65, 134, 8, SS_LEFT
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
IDD_3DSETTINGS DIALOGEX 0, 0, 174, 73
|
IDD_3DSETTINGS DIALOGEX 0, 0, 174, 120
|
||||||
STYLE DS_MODALFRAME | DS_SETFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP | WS_SYSMENU
|
STYLE DS_MODALFRAME | DS_SETFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP | WS_SYSMENU
|
||||||
CAPTION "3D settings"
|
CAPTION "3D settings"
|
||||||
FONT 8, "MS Sans Serif", 0, 0, 0
|
FONT 8, "MS Sans Serif", 0, 0, 0
|
||||||
BEGIN
|
BEGIN
|
||||||
DEFPUSHBUTTON "OK", IDOK, 62, 52, 50, 14, BS_DEFPUSHBUTTON
|
DEFPUSHBUTTON "OK", IDOK, 62, 92, 50, 14, BS_DEFPUSHBUTTON
|
||||||
PUSHBUTTON "Cancel", IDCANCEL, 117, 52, 50, 14, BS_PUSHBUTTON
|
PUSHBUTTON "Cancel", IDCANCEL, 117, 92, 50, 14, BS_PUSHBUTTON
|
||||||
PUSHBUTTON "Default", IDC_DEFAULT, 7, 52, 50, 14, BS_PUSHBUTTON
|
PUSHBUTTON "Default", IDC_DEFAULT, 7, 92, 50, 14, BS_PUSHBUTTON
|
||||||
GROUPBOX "Renderer:", IDC_STATIC, 7, 7, 160, 39
|
GROUPBOX "Renderer:", IDC_STATIC, 7, 7, 160, 39
|
||||||
COMBOBOX IDC_3DCORE, 15, 23, 146, 138, WS_TABSTOP | WS_VSCROLL | WS_TABSTOP | CBS_DROPDOWNLIST
|
COMBOBOX IDC_3DCORE, 15, 23, 146, 138, WS_TABSTOP | WS_VSCROLL | WS_TABSTOP | CBS_DROPDOWNLIST
|
||||||
|
AUTOCHECKBOX "Unrealistically High-Precision Color Interpolation", IDC_INTERPOLATECOLOR, 9, 55, 165, 10, BS_AUTOCHECKBOX
|
||||||
|
LTEXT "(Presently only effective for SoftRasterizer)", IDC_STATIC, 21, 65, 134, 8, SS_LEFT
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
|
LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
|
||||||
IDD_3DSETTINGS DIALOG 0, 0, 174, 73
|
IDD_3DSETTINGS DIALOG 0, 0, 174, 120
|
||||||
STYLE DS_MODALFRAME | DS_SETFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP | WS_SYSMENU
|
STYLE DS_MODALFRAME | DS_SETFONT | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP | WS_SYSMENU
|
||||||
CAPTION "Configuration 3D"
|
CAPTION "Configuration 3D"
|
||||||
FONT 8, "MS Sans Serif"
|
FONT 8, "MS Sans Serif"
|
||||||
BEGIN
|
BEGIN
|
||||||
DEFPUSHBUTTON "OK", IDOK, 62, 52, 50, 14, BS_DEFPUSHBUTTON
|
DEFPUSHBUTTON "OK", IDOK, 62, 92, 50, 14, BS_DEFPUSHBUTTON
|
||||||
PUSHBUTTON "Annuler", IDCANCEL, 117, 52, 50, 14, BS_PUSHBUTTON
|
PUSHBUTTON "Annuler", IDCANCEL, 117, 92, 50, 14, BS_PUSHBUTTON
|
||||||
PUSHBUTTON "Par défaut", IDC_DEFAULT, 7, 52, 50, 14, BS_PUSHBUTTON
|
PUSHBUTTON "Par défaut", IDC_DEFAULT, 7, 92, 50, 14, BS_PUSHBUTTON
|
||||||
GROUPBOX "Moteur de rendu :", IDC_STATIC, 7, 7, 160, 39
|
GROUPBOX "Moteur de rendu :", IDC_STATIC, 7, 7, 160, 39
|
||||||
COMBOBOX IDC_3DCORE, 15, 23, 146, 138, WS_TABSTOP | WS_VSCROLL | WS_TABSTOP | CBS_DROPDOWNLIST
|
COMBOBOX IDC_3DCORE, 15, 23, 146, 138, WS_TABSTOP | WS_VSCROLL | WS_TABSTOP | CBS_DROPDOWNLIST
|
||||||
|
AUTOCHECKBOX "Unrealistically High-Precision Color Interpolation", IDC_INTERPOLATECOLOR, 9, 55, 165, 10, BS_AUTOCHECKBOX
|
||||||
|
LTEXT "(Presently only effective for SoftRasterizer)", IDC_STATIC, 21, 65, 134, 8, SS_LEFT
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue