diff --git a/index.html b/index.html
index 56a253b..d4ad1d9 100644
--- a/index.html
+++ b/index.html
@@ -361,6 +361,10 @@
Camera Mode: C (FPS/Orbital)
Current: FPS
+
+ Rendering:
+ F Toggle Wireframe
+
FPS Camera:
WASD Move
diff --git a/src/Grid.ts b/src/Grid.ts
index 78a4790..2dd61c3 100644
--- a/src/Grid.ts
+++ b/src/Grid.ts
@@ -58,10 +58,17 @@ export class Grid {
gl.bindVertexArray(null);
}
- draw(gl: WebGL2RenderingContext): void {
+ draw(gl: WebGL2RenderingContext, wireframe: boolean = false): void {
if (this.vao) {
gl.bindVertexArray(this.vao);
- gl.drawElements(gl.TRIANGLES, this.indices.length, gl.UNSIGNED_INT, 0);
+ if (wireframe) {
+ // Draw as lines for wireframe mode
+ for (let i = 0; i < this.indices.length; i += 3) {
+ gl.drawElements(gl.LINE_LOOP, 3, gl.UNSIGNED_INT, i * 4);
+ }
+ } else {
+ gl.drawElements(gl.TRIANGLES, this.indices.length, gl.UNSIGNED_INT, 0);
+ }
gl.bindVertexArray(null);
}
}
diff --git a/src/main.ts b/src/main.ts
index 2de6b75..7c594da 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -155,6 +155,8 @@ var curRotY = Config.CAMERA_DEFAULT_ROT_Y;
var cameraMode: 'orbital' | 'fps' = 'fps';
var moveSpeed = 0.15;
var fastMoveSpeed = 0.4;
+/** Rendering modes */
+var wireframeMode = false;
function drawScene() {
fps++;
let now = new Date();
@@ -280,7 +282,12 @@ function drawScene() {
//gl.uniform1f(uTime_loc, timeSpent);
let displacementMap_loc = gl.getUniformLocation(defaultProgram, "displace_map");
gl.uniform1i(displacementMap_loc, 0); //Get texture from slot 0
- oceanGrid.draw(gl);
+
+ // Draw ocean grid with wireframe mode if enabled
+ if (wireframeMode) {
+ gl.lineWidth(1.0);
+ }
+ oceanGrid.draw(gl, wireframeMode);
}
requestAnimationFrame(drawScene);
}
@@ -429,6 +436,12 @@ function main() {
evt.preventDefault();
}
+ // Wireframe toggle with F key
+ if (evt.key === 'f' || evt.key === 'F') {
+ wireframeMode = !wireframeMode;
+ console.log(`Wireframe mode: ${wireframeMode ? 'ON' : 'OFF'}`);
+ }
+
// Handle orbital camera keyboard input
if (cameraMode === 'orbital') {
handleKeyboardInput();