Enable OpenGL GAL and 3D viewer stubs for WASM
Changes: - Add glu_wasm_impl.cpp: GLU tesselator using KiCad's earcut triangulation - Add GL/glu.h: GLU header for WASM builds - Add 3D viewer stubs for KICAD_BUILD_3D_VIEWER_WASM=ON - Remove obsolete gl_canvas_stub.cpp (OpenGL now uses real impl) - Remove obsolete glu_stub.c (replaced by glu_wasm_impl.cpp) - Update build-pcbnew.sh comment about GLU implementation The OpenGL GAL now works in WASM using WebGL with LEGACY_GL_EMULATION. 3D viewer is stubbed out but builds successfully. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
ca4f7eb40d
commit
cb58b43bd1
9 changed files with 945 additions and 558 deletions
88
wasm/stubs/GL/glu.h
Normal file
88
wasm/stubs/GL/glu.h
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
/**
|
||||
* GLU header for WebAssembly builds
|
||||
*
|
||||
* Provides GLU function declarations. Implementation is in glu_wasm_impl.cpp
|
||||
* which uses KiCad's earcut-based polygon triangulation.
|
||||
*/
|
||||
|
||||
#ifndef __GLU_H__
|
||||
#define __GLU_H__
|
||||
|
||||
#include <GLES2/gl2.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
// GLU types
|
||||
typedef double GLdouble;
|
||||
typedef void (*_GLUfuncptr)(void);
|
||||
typedef struct GLUtesselator GLUtesselator;
|
||||
typedef struct GLUquadric GLUquadric;
|
||||
|
||||
// GLU constants
|
||||
#define GLU_TESS_BEGIN 100100
|
||||
#define GLU_TESS_VERTEX 100101
|
||||
#define GLU_TESS_END 100102
|
||||
#define GLU_TESS_ERROR 100103
|
||||
#define GLU_TESS_EDGE_FLAG 100104
|
||||
#define GLU_TESS_COMBINE 100105
|
||||
#define GLU_TESS_BEGIN_DATA 100106
|
||||
#define GLU_TESS_VERTEX_DATA 100107
|
||||
#define GLU_TESS_END_DATA 100108
|
||||
#define GLU_TESS_ERROR_DATA 100109
|
||||
#define GLU_TESS_EDGE_FLAG_DATA 100110
|
||||
#define GLU_TESS_COMBINE_DATA 100111
|
||||
|
||||
#define GLU_TESS_WINDING_RULE 100140
|
||||
#define GLU_TESS_WINDING_ODD 100130
|
||||
#define GLU_TESS_WINDING_NONZERO 100131
|
||||
#define GLU_TESS_WINDING_POSITIVE 100132
|
||||
#define GLU_TESS_WINDING_NEGATIVE 100133
|
||||
#define GLU_TESS_WINDING_ABS_GEQ_TWO 100134
|
||||
|
||||
// Tesselator functions
|
||||
GLUtesselator* gluNewTess(void);
|
||||
void gluDeleteTess(GLUtesselator* tess);
|
||||
void gluTessCallback(GLUtesselator* tess, GLenum which, _GLUfuncptr fn);
|
||||
void gluTessProperty(GLUtesselator* tess, GLenum which, GLdouble value);
|
||||
void gluGetTessProperty(GLUtesselator* tess, GLenum which, GLdouble* value);
|
||||
void gluTessNormal(GLUtesselator* tess, GLdouble x, GLdouble y, GLdouble z);
|
||||
void gluTessBeginPolygon(GLUtesselator* tess, void* userData);
|
||||
void gluTessBeginContour(GLUtesselator* tess);
|
||||
void gluTessVertex(GLUtesselator* tess, GLdouble coords[3], void* data);
|
||||
void gluTessEndContour(GLUtesselator* tess);
|
||||
void gluTessEndPolygon(GLUtesselator* tess);
|
||||
const unsigned char* gluErrorString(GLenum error);
|
||||
|
||||
// Quadric constants
|
||||
#define GLU_OUTSIDE 100020
|
||||
#define GLU_INSIDE 100021
|
||||
#define GLU_POINT 100010
|
||||
#define GLU_LINE 100011
|
||||
#define GLU_FILL 100012
|
||||
#define GLU_SILHOUETTE 100013
|
||||
#define GLU_SMOOTH 100000
|
||||
#define GLU_FLAT 100001
|
||||
#define GLU_NONE 100002
|
||||
|
||||
// Quadric type aliases
|
||||
typedef GLUquadric GLUquadricObj;
|
||||
|
||||
// Quadric functions (stubs - not implemented for WASM)
|
||||
GLUquadric* gluNewQuadric(void);
|
||||
void gluDeleteQuadric(GLUquadric* q);
|
||||
void gluQuadricDrawStyle(GLUquadric* q, GLenum style);
|
||||
void gluQuadricNormals(GLUquadric* q, GLenum normals);
|
||||
void gluCylinder(GLUquadric* q, double base, double top, double height, int slices, int stacks);
|
||||
void gluDisk(GLUquadric* q, double inner, double outer, int slices, int loops);
|
||||
void gluSphere(GLUquadric* q, double radius, int slices, int stacks);
|
||||
|
||||
// Matrix functions (stub)
|
||||
void gluPerspective(double fovy, double aspect, double zNear, double zFar);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __GLU_H__ */
|
||||
Loading…
Reference in a new issue