Here's my .dll build script for building in winXP, using VMWare player.
Before install VM tools (the VM drivers) set the VM hardware compatibility to "Workstation 10" (no directx 10, etc)
Menu -> VM -> Manage -> Change hardware compatibility...
cmake 3.13.5
It's kinda hacky but works okay... it builds 4 dirs
debug and release
VM (VM_2GL_HACK_ON on)
Native (VM_2GL_HACK_ON off)
Virtual Box removed 3D support for winXP in v6.1, so I haven't tested it.
Code:
echo off
cls
REM NOTES
REM https://github.com/MNRK01/myGCCBuilds/releases/tag/12.2.0
REM i686-12.2.0-release-posix-sjlj-rt_v10-rev0.7z multilib
REM Some useful info
REM https://mingwpy.github.io/background-mingw.html
REM https://stat.ethz.ch/pipermail/r-sig-windows/2015q3/000020.html
echo.
echo --- setup info ---
echo GCC
echo https://github.com/niXman/mingw-builds-binaries/releases/tag/12.2.0-rt_v10-rev2
echo file: i686-12.2.0-release-win32-dwarf-msvcrt-rt_v10-rev2.7z
echo extracted to: C:\mingw-w64-12.2.msvcrt-dwarf-i686 and path set etc
echo libstdc++-6.dll must also be copied from the compiler to your executable location.
echo.
echo.
echo SDL2
echo https://github.com/libsdl-org/SDL/releases/tag/release-2.26.2
echo file: SDL2-devel-2.26.2-mingw.zip
echo extract to: C:\SDL2-devel-2.26.2-mingw
echo.
echo.
pause
echo.
echo VM_2GL_HACK_ON
echo VM OpenGL on windows XP (VMware) is very limited, supporting up to GL2.1 with GL3 at 43% support :/
echo and a few extensions, one that isn't is ARB_texture_rg which is
echo used by H3D. This must be ignored if it's not available,
echo comment out line egRendererBaseGL2.cpp:382 & 3
echo.
copy /Y C:\SDL2-devel-2.26.2-mingw\SDL2-2.26.2\i686-w64-mingw32\bin\SDL2.dll Binaries\Windows\Debug
pause
echo --- winxp VM builds ---
echo.
echo winxp-vm-gl2-release
mkdir winxp-vm-gl2-release
cd winxp-vm-gl2-release
echo.
cmake .. -G "MinGW Makefiles" -DHORDE3D_BUILD_EXAMPLES=ON -DHORDE3D_USE_GLFW=OFF -DHORDE3D_USE_SDL=ON -DHORDE3D_FORCE_DOWNLOAD_SDL=OFF -DCMAKE_MAKE_PROGRAM=make -DCMAKE_EXE_LINKER_FLAGS="-static-libgcc -static-libstdc++" -DSDL2_INCLUDE_DIR=C:/SDL2-devel-2.26.2-mingw/SDL2-2.26.2/i686-w64-mingw32/include/SDL2 -DSDL2_LIBRARY:STRING=C:/SDL2-devel-2.26.2-mingw/SDL2-2.26.2/i686-w64-mingw32/lib/libSDL2.dll.a -DCMAKE_CXX_FLAGS="-fpermissive -DVM_2GL_HACK_ON" -DHORDE3D_USE_GL4=OFF -DCMAKE_BUILD_TYPE=Release
echo.
pause
make
pause
echo.
copy /Y C:\SDL2-devel-2.26.2-mingw\SDL2-2.26.2\i686-w64-mingw32\bin\SDL2.dll Binaries\Windows\Release
cd ..
echo winxp-vm-gl2-debug
mkdir winxp-vm-gl2-debug
cd winxp-vm-gl2-debug
cmake .. -G "MinGW Makefiles" -DHORDE3D_BUILD_EXAMPLES=ON -DHORDE3D_USE_GLFW=OFF -DHORDE3D_USE_SDL=ON -DHORDE3D_FORCE_DOWNLOAD_SDL=OFF -DCMAKE_MAKE_PROGRAM=make -DCMAKE_EXE_LINKER_FLAGS="-static-libgcc -static-libstdc++" -DSDL2_INCLUDE_DIR=C:/SDL2-devel-2.26.2-mingw/SDL2-2.26.2/i686-w64-mingw32/include/SDL2 -DSDL2_LIBRARY:STRING=C:/SDL2-devel-2.26.2-mingw/SDL2-2.26.2/i686-w64-mingw32/lib/libSDL2.dll.a -DCMAKE_CXX_FLAGS="-fpermissive -DVM_2GL_HACK_ON" -DHORDE3D_USE_GL4=OFF -DCMAKE_BUILD_TYPE=Debug
echo.
pause
make
pause
echo.
copy /Y C:\SDL2-devel-2.26.2-mingw\SDL2-2.26.2\i686-w64-mingw32\bin\SDL2.dll Binaries\Windows\Debug
cd ..
echo --- winxp hardware builds ---
echo winxp-release
mkdir winxp-release
cd winxp-release
cmake .. -G "MinGW Makefiles" -DHORDE3D_BUILD_EXAMPLES=ON -DHORDE3D_USE_GLFW=OFF -DHORDE3D_USE_SDL=ON -DHORDE3D_FORCE_DOWNLOAD_SDL=OFF -DCMAKE_MAKE_PROGRAM=make -DCMAKE_EXE_LINKER_FLAGS="-static-libgcc -static-libstdc++" -DSDL2_INCLUDE_DIR=C:/SDL2-devel-2.26.2-mingw/SDL2-2.26.2/i686-w64-mingw32/include/SDL2 -DSDL2_LIBRARY:STRING=C:/SDL2-devel-2.26.2-mingw/SDL2-2.26.2/i686-w64-mingw32/lib/libSDL2.dll.a -DCMAKE_CXX_FLAGS="-fpermissive" -DCMAKE_BUILD_TYPE=Release
echo.
pause
make
pause
echo.
copy /Y C:\SDL2-devel-2.26.2-mingw\SDL2-2.26.2\i686-w64-mingw32\bin\SDL2.dll Binaries\Windows\Release
cd ..
winxp-debug
mkdir winxp-debug
cd winxp-debug
cmake .. -G "MinGW Makefiles" -DHORDE3D_BUILD_EXAMPLES=ON -DHORDE3D_USE_GLFW=OFF -DHORDE3D_USE_SDL=ON -DHORDE3D_FORCE_DOWNLOAD_SDL=OFF -DCMAKE_MAKE_PROGRAM=make -DCMAKE_EXE_LINKER_FLAGS="-static-libgcc -static-libstdc++" -DSDL2_INCLUDE_DIR=C:/SDL2-devel-2.26.2-mingw/SDL2-2.26.2/i686-w64-mingw32/include/SDL2 -DSDL2_LIBRARY:STRING=C:/SDL2-devel-2.26.2-mingw/SDL2-2.26.2/i686-w64-mingw32/lib/libSDL2.dll.a -DCMAKE_CXX_FLAGS="-fpermissive" -DCMAKE_BUILD_TYPE=Debug
echo.
pause
make
pause
echo.
copy /Y C:\SDL2-devel-2.26.2-mingw\SDL2-2.26.2\i686-w64-mingw32\bin\SDL2.dll Binaries\Windows\Debug
cd ..
I'm not sure what the ARB_texture_rg does, but it effects Chicago's background, (deferred rendering only) looks like it's not clearing it.
Looks like EXT_framebuffer_multisample is also used and not supported, but it's not an issue running the samples.
To use the dll's I use tcc (tiny C Compiler)
create dll def files first:
tcc -impdef -v SDL2.dll
tcc -impdef -v libHorde3D.dll
tcc -impdef -v libHorde3DUtils.dll
tcc -impdef -v libstdc++-6.dll
CFLAGS are:
-Wall -Werror -g -I./includes -L. -lSDL2 -llibHorde3DUtils -llibHorde3D -lopengl32
It worked fine with the tutorial
GL report from my laptop
Attachment:
File comment: full report - running Linux (MX 21.3 AHS) NVidia RXT3060 laptop
VM-GL.txt [5.81 KiB]
Downloaded 1022 times
You need to replace this function with the msvcrt friendly version:
In file utPlatform.h
Error: variable 'st rncpy' definition is marked dllimport
comment out the following
// #if (!defined( _MSC_VER ) || (defined( _MSC_VER ) && (_MSC_VER < 1400))) // && !defined( __MINGW32__ )
// # define strncpy_s( dst, dstSize, src, count ) strncpy( (dst), (src), ( ( (count) <= (dstSize) ) ? (count) : (dstSize) ) )
// #endif
add this to the top of the header:
#ifndef _utPlatform_H_
#define _utPlatform_H_
#if (!defined( _MSC_VER ) || (defined( _MSC_VER ) && (_MSC_VER < 1400))) // && !defined( __MINGW32__ )
#include <string.h>
# define strncpy_s( dst, dstSize, src, count ) strncpy( (dst), (src), ( ( (count) <= (dstSize) ) ? (count) : (dstSize) ) )
#endif
function:
inline float toFloat(const char* str)
#ifdef __MINGW32__
// return _atof_l(str, locale.get());
// _atof_l isn't in msvcrt
// from
https://stackoverflow.com/questions/133 ... 34#1333534 {
float result = 0;
float sign = *str == '-' ? str++, -1 : 1;
while (*str >= '0' && *str <= '9') {
result *= 10;
result += *str - '0';
str++;
}
if (*str == ',' || *str == '.') {
str++;
float multiplier = 0.1;
while (*str >= '0' && *str <= '9') {
result += (*str - '0') * multiplier;
multiplier /= 10;
str++;
}
}
result *= sign;
if (*str == 'e' || *str == 'E') {
str++;
float powerer = *str == '-'? str++, 0.1 : 10;
float power = 0;
while (*str >= '0' && *str <= '9') {
power *= 10;
power += *str - '0';
str++;
}
result *= pow(powerer, power);
}
return result;
}
// from
https://stackoverflow.com/questions/133 ... 34#1333534