Compare commits

...

4 Commits

Author SHA1 Message Date
Jakly
e9d061eaca
Merge a371c8f1e0 into 7c1d2a64f4 2024-11-12 12:56:34 +01:00
Nadia Holmquist Pedersen
7c1d2a64f4 Set WIN32_LEAN_AND_MEAN, gets rid of the winsock2 warnings and probably
Some checks failed
macOS / ${{ matrix.arch }} (arm64) (push) Has been cancelled
macOS / ${{ matrix.arch }} (x86_64) (push) Has been cancelled
Ubuntu / x86_64 (push) Has been cancelled
Ubuntu / aarch64 (push) Has been cancelled
Windows / build (push) Has been cancelled
macOS / Universal binary (push) Has been cancelled
speeds up compilation a tiny bit

oh and NOMINMAX too for good measure while we're at it
2024-11-11 14:18:05 +01:00
Nadia Holmquist Pedersen
b2f6fab6f4 cmake: use interface include directories properly
and fix an indent I guess
2024-11-11 12:06:12 +01:00
Jaklyy
a371c8f1e0 first vertex clipped against last becomes last vertex
theory i had.
fixes clipped horizontal line polygons
2023-11-26 20:27:44 -05:00
4 changed files with 46 additions and 14 deletions

View File

@ -127,6 +127,8 @@ if (ENABLE_JIT)
endif() endif()
endif() endif()
target_include_directories(core INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
set(MELONDS_VERSION_SUFFIX "$ENV{MELONDS_VERSION_SUFFIX}" CACHE STRING "Suffix to add to displayed melonDS version") set(MELONDS_VERSION_SUFFIX "$ENV{MELONDS_VERSION_SUFFIX}" CACHE STRING "Suffix to add to displayed melonDS version")
option(MELONDS_EMBED_BUILD_INFO "Embed detailed build info into the binary" OFF) option(MELONDS_EMBED_BUILD_INFO "Embed detailed build info into the binary" OFF)
set(MELONDS_GIT_BRANCH "$ENV{MELONDS_GIT_BRANCH}" CACHE STRING "The Git branch used for this build") set(MELONDS_GIT_BRANCH "$ENV{MELONDS_GIT_BRANCH}" CACHE STRING "The Git branch used for this build")
@ -178,13 +180,14 @@ endif()
if (WIN32) if (WIN32)
target_link_libraries(core PRIVATE ole32 comctl32 wsock32 ws2_32) target_link_libraries(core PRIVATE ole32 comctl32 wsock32 ws2_32)
target_compile_definitions(core PUBLIC WIN32_LEAN_AND_MEAN NOMINMAX)
elseif(NOT APPLE AND NOT HAIKU) elseif(NOT APPLE AND NOT HAIKU)
check_library_exists(rt shm_open "" NEED_LIBRT) check_library_exists(rt shm_open "" NEED_LIBRT)
if (NEED_LIBRT) if (NEED_LIBRT)
target_link_libraries(core PRIVATE rt) target_link_libraries(core PRIVATE rt)
endif() endif()
elseif(HAIKU) elseif(HAIKU)
target_link_libraries(core PRIVATE network) target_link_libraries(core PRIVATE network)
endif() endif()
if (ENABLE_JIT_PROFILING) if (ENABLE_JIT_PROFILING)

View File

@ -849,6 +849,8 @@ int ClipAgainstPlane(const GPU3D& gpu, Vertex* vertices, int nverts, int clipsta
temp[1] = vertices[1]; temp[1] = vertices[1];
} }
Vertex holdit;
bool heldit = false;
for (int i = clipstart; i < nverts; i++) for (int i = clipstart; i < nverts; i++)
{ {
prev = i-1; if (prev < 0) prev = nverts-1; prev = i-1; if (prev < 0) prev = nverts-1;
@ -862,8 +864,16 @@ int ClipAgainstPlane(const GPU3D& gpu, Vertex* vertices, int nverts, int clipsta
Vertex* vprev = &vertices[prev]; Vertex* vprev = &vertices[prev];
if (vprev->Position[comp] <= vprev->Position[3]) if (vprev->Position[comp] <= vprev->Position[3])
{ {
ClipSegment<comp, 1, attribs>(&temp[c], &vtx, vprev); if (i == 0)
c++; {
ClipSegment<comp, 1, attribs>(&holdit, &vtx, vprev);
heldit = true;
}
else
{
ClipSegment<comp, 1, attribs>(&temp[c], &vtx, vprev);
c++;
}
} }
Vertex* vnext = &vertices[next]; Vertex* vnext = &vertices[next];
@ -877,6 +887,12 @@ int ClipAgainstPlane(const GPU3D& gpu, Vertex* vertices, int nverts, int clipsta
temp[c++] = vtx; temp[c++] = vtx;
} }
if (heldit)
{
temp[c++] = holdit;
}
heldit = false;
nverts = c; c = clipstart; nverts = c; c = clipstart;
for (int i = clipstart; i < nverts; i++) for (int i = clipstart; i < nverts; i++)
{ {
@ -889,8 +905,17 @@ int ClipAgainstPlane(const GPU3D& gpu, Vertex* vertices, int nverts, int clipsta
Vertex* vprev = &temp[prev]; Vertex* vprev = &temp[prev];
if (vprev->Position[comp] >= -vprev->Position[3]) if (vprev->Position[comp] >= -vprev->Position[3])
{ {
ClipSegment<comp, -1, attribs>(&vertices[c], &vtx, vprev);
c++; if (i == 0)
{
ClipSegment<comp, -1, attribs>(&holdit, &vtx, vprev);
heldit = true;
}
else
{
ClipSegment<comp, -1, attribs>(&vertices[c], &vtx, vprev);
c++;
}
} }
Vertex* vnext = &temp[next]; Vertex* vnext = &temp[next];
@ -903,6 +928,11 @@ int ClipAgainstPlane(const GPU3D& gpu, Vertex* vertices, int nverts, int clipsta
else else
vertices[c++] = vtx; vertices[c++] = vtx;
} }
if (heldit)
{
vertices[c++] = holdit;
}
// checkme // checkme
for (int i = 0; i < c; i++) for (int i = 0; i < c; i++)

View File

@ -91,8 +91,7 @@ add_compile_definitions(ARCHIVE_SUPPORT_ENABLED)
add_executable(melonDS ${SOURCES_QT_SDL}) add_executable(melonDS ${SOURCES_QT_SDL})
add_subdirectory("../../net" add_subdirectory("../../net"
"${CMAKE_BINARY_DIR}/net" ${CMAKE_BINARY_DIR}/net)
)
target_link_libraries(melonDS PRIVATE net-utils) target_link_libraries(melonDS PRIVATE net-utils)
@ -171,10 +170,10 @@ if (BUILD_STATIC)
endif() endif()
endif() endif()
target_include_directories(melonDS PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") target_include_directories(melonDS PUBLIC
target_include_directories(melonDS PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/..") "${CMAKE_CURRENT_SOURCE_DIR}"
target_include_directories(melonDS PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/../..") "${CMAKE_CURRENT_SOURCE_DIR}/..")
target_include_directories(melonDS PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/../../net")
if (USE_QT6) if (USE_QT6)
target_include_directories(melonDS PUBLIC ${Qt6Gui_PRIVATE_INCLUDE_DIRS}) target_include_directories(melonDS PUBLIC ${Qt6Gui_PRIVATE_INCLUDE_DIRS})
else() else()

View File

@ -11,9 +11,9 @@ add_library(net-utils STATIC
MPInterface.cpp MPInterface.cpp
) )
target_include_directories(net-utils PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") target_include_directories(net-utils PUBLIC
target_include_directories(net-utils PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/..") "${CMAKE_CURRENT_SOURCE_DIR}"
"${CMAKE_CURRENT_SOURCE_DIR}/..")
option(USE_SYSTEM_LIBSLIRP "Use system libslirp instead of the bundled version" OFF) option(USE_SYSTEM_LIBSLIRP "Use system libslirp instead of the bundled version" OFF)
if (USE_SYSTEM_LIBSLIRP) if (USE_SYSTEM_LIBSLIRP)