summaryrefslogtreecommitdiff
path: root/game
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2026-01-31 01:49:07 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2026-01-31 01:49:07 +0000
commitb3f0df24c98dc6a7a341271dd85451345f2be1a7 (patch)
tree10e5bb96397d9de72a81a7a166915fa99a0d2f0b /game
parentUpdate OpenGL context and shaders to v4.6 (diff)
downloadilt-b3f0df24c98dc6a7a341271dd85451345f2be1a7.tar.bz2
ilt-b3f0df24c98dc6a7a341271dd85451345f2be1a7.tar.xz
ilt-b3f0df24c98dc6a7a341271dd85451345f2be1a7.zip
Initial commit using tesselation shader to create curves
Disables glslangValidator because of file extension mess up.
Diffstat (limited to 'game')
-rw-r--r--game/network/rail.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/game/network/rail.cpp b/game/network/rail.cpp
index c0e597d..f265d6b 100644
--- a/game/network/rail.cpp
+++ b/game/network/rail.cpp
@@ -156,12 +156,12 @@ template<> NetworkLinkHolder<RailLinkCurve>::NetworkLinkHolder()
namespace {
template<typename LinkType>
void
- renderType(const NetworkLinkHolder<LinkType> & networkLinks, auto & shader)
+ renderType(const NetworkLinkHolder<LinkType> & networkLinks, auto & shader, GLenum mode)
{
if (auto count = networkLinks.vertices.size()) {
shader.use(RAIL_CROSS_SECTION, RAIL_TEXTURE_POS);
glBindVertexArray(networkLinks.vao);
- glDrawArrays(GL_POINTS, 0, static_cast<GLsizei>(count));
+ glDrawArrays(mode, 0, static_cast<GLsizei>(count));
}
};
}
@@ -169,12 +169,13 @@ namespace {
void
RailLinks::render(const SceneShader & shader, const Frustum &) const
{
- if (!links.empty()) {
+ if (auto _ = glDebugScope(0); !links.empty()) {
texture->bind();
glEnable(GL_POLYGON_OFFSET_FILL);
glPolygonOffset(-1, 0);
- renderType<RailLinkStraight>(*this, shader.networkStraight);
- renderType<RailLinkCurve>(*this, shader.networkCurve);
+ renderType<RailLinkStraight>(*this, shader.networkStraight, GL_POINTS);
+ glPatchParameteri(GL_PATCH_VERTICES, 1);
+ renderType<RailLinkCurve>(*this, shader.networkCurve, GL_PATCHES);
glDisable(GL_POLYGON_OFFSET_FILL);
glBindVertexArray(0);
}