Skip to content

Commit

Permalink
Avoid querying WebGL extension unless needed (#2050)
Browse files Browse the repository at this point in the history
  • Loading branch information
Pessimistress committed Mar 23, 2024
1 parent 236c41f commit b7e70fd
Showing 1 changed file with 20 additions and 19 deletions.
39 changes: 20 additions & 19 deletions modules/webgl/src/adapter/converters/device-parameters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -159,11 +159,11 @@ export function setDeviceParameters(device: Device, parameters: Parameters) {

// WEBGL EXTENSIONS

if (device.features.has('provoking-vertex-webgl')) {
const extensions = webglDevice.getExtension('WEBGL_provoking_vertex');
const ext = extensions.WEBGL_provoking_vertex;
if (parameters.provokingVertex) {
if (device.features.has('provoking-vertex-webgl')) {
const extensions = webglDevice.getExtension('WEBGL_provoking_vertex');
const ext = extensions.WEBGL_provoking_vertex;

if (parameters.provokingVertex) {
const vertex = map<ProvokingVertex, GLProvokingVertex>(
'provokingVertex',
parameters.provokingVertex,
Expand All @@ -176,21 +176,22 @@ export function setDeviceParameters(device: Device, parameters: Parameters) {
}
}

if (device.features.has('polygon-mode-webgl')) {
const extensions = webglDevice.getExtension('WEBGL_polygon_mode');
const ext = extensions.WEBGL_polygon_mode;

if (parameters.polygonMode) {
const mode = map<PolygonMode, GLPolygonMode>('polygonMode', parameters.polygonMode, {
fill: GL.FILL_WEBGL,
line: GL.LINE_WEBGL
});
ext?.polygonModeWEBGL(GL.FRONT, mode);
ext?.polygonModeWEBGL(GL.BACK, mode);
}

if (parameters.polygonOffsetLine) {
gl.enable(GL.POLYGON_OFFSET_LINE_WEBGL);
if (parameters.polygonMode || parameters.polygonOffsetLine) {
if (device.features.has('polygon-mode-webgl')) {
if (parameters.polygonMode) {
const extensions = webglDevice.getExtension('WEBGL_polygon_mode');
const ext = extensions.WEBGL_polygon_mode;
const mode = map<PolygonMode, GLPolygonMode>('polygonMode', parameters.polygonMode, {
fill: GL.FILL_WEBGL,
line: GL.LINE_WEBGL
});
ext?.polygonModeWEBGL(GL.FRONT, mode);
ext?.polygonModeWEBGL(GL.BACK, mode);
}

if (parameters.polygonOffsetLine) {
gl.enable(GL.POLYGON_OFFSET_LINE_WEBGL);
}
}
}

Expand Down

0 comments on commit b7e70fd

Please sign in to comment.