Implemented OpenGL anisotropic filtering

This commit is contained in:
mudlord 2007-11-08 10:28:49 +00:00
parent d84cb0e629
commit d81f8ce729
7 changed files with 840 additions and 807 deletions

View File

@ -1164,6 +1164,10 @@
Filter="h;hpp;hxx;hm;inl;inc;xsd" Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
> >
<File
RelativePath=".\src\win32\resource.h"
>
</File>
<Filter <Filter
Name="GB" Name="GB"
> >

View File

@ -175,6 +175,8 @@ BEGIN_MESSAGE_MAP(MainWnd, CWnd)
ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_RENDEROPTIONS_GLNEAREST, OnUpdateOptionsVideoRenderoptionsGlnearest) ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_RENDEROPTIONS_GLNEAREST, OnUpdateOptionsVideoRenderoptionsGlnearest)
ON_COMMAND(ID_OPTIONS_VIDEO_RENDEROPTIONS_GLBILINEAR, OnOptionsVideoRenderoptionsGlbilinear) ON_COMMAND(ID_OPTIONS_VIDEO_RENDEROPTIONS_GLBILINEAR, OnOptionsVideoRenderoptionsGlbilinear)
ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_RENDEROPTIONS_GLBILINEAR, OnUpdateOptionsVideoRenderoptionsGlbilinear) ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_RENDEROPTIONS_GLBILINEAR, OnUpdateOptionsVideoRenderoptionsGlbilinear)
ON_COMMAND(ID_OPTIONS_VIDEO_RENDEROPTIONS_GLANISOTROPIC, OnOptionsVideoRenderoptionsGlanisotropic)
ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_RENDEROPTIONS_GLANISOTROPIC, OnUpdateOptionsVideoRenderoptionsGlanisotropic)
ON_COMMAND(ID_OPTIONS_VIDEO_RENDEROPTIONS_GLTRIANGLE, OnOptionsVideoRenderoptionsGltriangle) ON_COMMAND(ID_OPTIONS_VIDEO_RENDEROPTIONS_GLTRIANGLE, OnOptionsVideoRenderoptionsGltriangle)
ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_RENDEROPTIONS_GLTRIANGLE, OnUpdateOptionsVideoRenderoptionsGltriangle) ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_RENDEROPTIONS_GLTRIANGLE, OnUpdateOptionsVideoRenderoptionsGltriangle)
ON_COMMAND(ID_OPTIONS_VIDEO_RENDEROPTIONS_GLQUADS, OnOptionsVideoRenderoptionsGlquads) ON_COMMAND(ID_OPTIONS_VIDEO_RENDEROPTIONS_GLQUADS, OnOptionsVideoRenderoptionsGlquads)

View File

@ -202,6 +202,9 @@ class MainWnd : public CWnd
afx_msg void OnUpdateOptionsVideoRenderoptionsGlnearest(CCmdUI* pCmdUI); afx_msg void OnUpdateOptionsVideoRenderoptionsGlnearest(CCmdUI* pCmdUI);
afx_msg void OnOptionsVideoRenderoptionsGlbilinear(); afx_msg void OnOptionsVideoRenderoptionsGlbilinear();
afx_msg void OnUpdateOptionsVideoRenderoptionsGlbilinear(CCmdUI* pCmdUI); afx_msg void OnUpdateOptionsVideoRenderoptionsGlbilinear(CCmdUI* pCmdUI);
afx_msg void OnUpdateOptionsVideoRenderoptionsGlanisotropic(CCmdUI* pCmdUI);
afx_msg void OnOptionsVideoRenderoptionsGlanisotropic();
afx_msg void OnOptionsVideoRenderoptionsGltriangle(); afx_msg void OnOptionsVideoRenderoptionsGltriangle();
afx_msg void OnUpdateOptionsVideoRenderoptionsGltriangle(CCmdUI* pCmdUI); afx_msg void OnUpdateOptionsVideoRenderoptionsGltriangle(CCmdUI* pCmdUI);
afx_msg void OnOptionsVideoRenderoptionsGlquads(); afx_msg void OnOptionsVideoRenderoptionsGlquads();

View File

@ -585,6 +585,20 @@ void MainWnd::OnUpdateOptionsVideoRenderoptionsGlbilinear(CCmdUI* pCmdUI)
pCmdUI->SetCheck(theApp.glFilter == 1); pCmdUI->SetCheck(theApp.glFilter == 1);
} }
void MainWnd::OnOptionsVideoRenderoptionsGlanisotropic()
{
theApp.glFilter = 2;
if( theApp.display ) {
theApp.display->setOption( _T("glFilter"), theApp.glFilter );
}
}
void MainWnd::OnUpdateOptionsVideoRenderoptionsGlanisotropic(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck(theApp.glFilter == 2);
}
void MainWnd::OnOptionsVideoRenderoptionsGltriangle() void MainWnd::OnOptionsVideoRenderoptionsGltriangle()
{ {

View File

@ -492,6 +492,13 @@ void OpenGLDisplay::updateFiltering( int value )
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
break; break;
case 2:
float largest_supported_anisotropy;
glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &largest_supported_anisotropy);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, largest_supported_anisotropy);
break;
} }
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP ); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP );

View File

@ -1552,6 +1552,7 @@ BEGIN
MENUITEM "&OpenGL", ID_OPTIONS_VIDEO_RENDERMETHOD_OPENGL MENUITEM "&OpenGL", ID_OPTIONS_VIDEO_RENDERMETHOD_OPENGL
MENUITEM " Filter: Nearest", ID_OPTIONS_VIDEO_RENDEROPTIONS_GLNEAREST MENUITEM " Filter: Nearest", ID_OPTIONS_VIDEO_RENDEROPTIONS_GLNEAREST
MENUITEM " Filter: Bilinear", ID_OPTIONS_VIDEO_RENDEROPTIONS_GLBILINEAR MENUITEM " Filter: Bilinear", ID_OPTIONS_VIDEO_RENDEROPTIONS_GLBILINEAR
MENUITEM " Filter: Anisotropic", ID_OPTIONS_VIDEO_RENDEROPTIONS_GLANISOTROPIC
MENUITEM " Vertex: Triangle", ID_OPTIONS_VIDEO_RENDEROPTIONS_GLTRIANGLE MENUITEM " Vertex: Triangle", ID_OPTIONS_VIDEO_RENDEROPTIONS_GLTRIANGLE
MENUITEM " Vertex: Quads", ID_OPTIONS_VIDEO_RENDEROPTIONS_GLQUADS MENUITEM " Vertex: Quads", ID_OPTIONS_VIDEO_RENDEROPTIONS_GLQUADS
MENUITEM SEPARATOR MENUITEM SEPARATOR

View File

@ -508,7 +508,7 @@
#define IDC_BIT_15 1265 #define IDC_BIT_15 1265
#define IDC_MIRRORING 1266 #define IDC_MIRRORING 1266
#define IDC_LY 1267 #define IDC_LY 1267
#define IDC_APPENDMODE 1268 #define IDC_APPENDMODE 1268
#define ID_HELP_ABOUT 40001 #define ID_HELP_ABOUT 40001
#define ID_FILE_EXIT 40002 #define ID_FILE_EXIT 40002
#define ID_OPTIONS_VIDEO_FRAMESKIP_0 40003 #define ID_OPTIONS_VIDEO_FRAMESKIP_0 40003
@ -765,7 +765,6 @@
#define ID_OPTIONS_SOUND_PCMINTERPOLATION_FIR 40297 #define ID_OPTIONS_SOUND_PCMINTERPOLATION_FIR 40297
#define ID_OPTIONS_SOUND_PCMINTERPOLATION_LIBRESAMPLE 40298 #define ID_OPTIONS_SOUND_PCMINTERPOLATION_LIBRESAMPLE 40298
#define ID_OPTIONS_FILTER_LCDCOLORS 40299 #define ID_OPTIONS_FILTER_LCDCOLORS 40299
#define ID_OPTIONS_EMULATOR_REMOVEINTROSGBA 40331
#define IDD_LINKTAB1 40300 #define IDD_LINKTAB1 40300
#define IDD_LINKTAB 40301 #define IDD_LINKTAB 40301
#define IDD_LINKTAB2 40302 #define IDD_LINKTAB2 40302
@ -794,13 +793,16 @@
#define IDC_LINK4P 40326 #define IDC_LINK4P 40326
#define IDC_CLINKUDP 40327 #define IDC_CLINKUDP 40327
#define IDC_SPEEDON 40328 #define IDC_SPEEDON 40328
#define ID_OPTIONS_EMULATOR_REMOVEINTROSGBA 40331
#define ID_Menu 40332
#define ID_OPTIONS_VIDEO_RENDEROPTIONS_GLANISOTROPIC 40333
// Next default values for new objects // Next default values for new objects
// //
#ifdef APSTUDIO_INVOKED #ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS #ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 159 #define _APS_NEXT_RESOURCE_VALUE 159
#define _APS_NEXT_COMMAND_VALUE 40332 #define _APS_NEXT_COMMAND_VALUE 40334
#define _APS_NEXT_CONTROL_VALUE 1269 #define _APS_NEXT_CONTROL_VALUE 1269
#define _APS_NEXT_SYMED_VALUE 103 #define _APS_NEXT_SYMED_VALUE 103
#endif #endif