HTTP/2 301
content-length: 162
content-type: text/html
date: Wed, 15 Oct 2025 00:13:17 GMT
location: https://developer.mozilla.org/en-US/docs/Web/API/WEBGL_compressed_texture_pvrtc
server: nginx
strict-transport-security: max-age=60; includeSubDomains
via: 1.1 google
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
HTTP/2 200
content-type: text/html
x-guploader-uploadid: AAwnv3KOQpCCo-xWDmD1rWOghjRrcujEAo2XO4YNqZ-8cAPtl84NHsC9CJD6sFnWn2FinDgP
cache-control: public, max-age=3600
expires: Wed, 15 Oct 2025 01:13:18 GMT
last-modified: Tue, 14 Oct 2025 01:07:34 GMT
etag: W/"e7ee3af866dfe8e1e5e5804c4b8513c7"
x-goog-generation: 1760404054111353
x-goog-metageneration: 1
x-goog-stored-content-encoding: identity
x-goog-stored-content-length: 141734
x-goog-meta-goog-reserved-file-mtime: 1760402262
x-goog-hash: crc32c=Bjr2zA==, md5=5+46+Gbf6OHl5YBMS4UTxw==
x-goog-storage-class: STANDARD
accept-ranges: none
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
alt-svc: clear
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
strict-transport-security: max-age=63072000
content-security-policy: default-src 'self'; script-src 'report-sample' 'self' 'wasm-unsafe-eval' https://www.google-analytics.com/analytics.js https://www.googletagmanager.com/gtag/js assets.codepen.io production-assets.codepen.io https://js.stripe.com 'sha256-XNBp89FG76amD8BqrJzyflxOF9PaWPqPqvJfKZPCv7M=' 'sha256-YCNoU9DNiinACbd8n6UPyB/8vj0kXvhkOni9/06SuYw=' 'sha256-PZjP7OR6mBEtnvXIZfCZ5PuOlxoDF1LDZL8aj8c42rw='; script-src-elem 'report-sample' 'self' 'wasm-unsafe-eval' https://www.google-analytics.com/analytics.js https://www.googletagmanager.com/gtag/js assets.codepen.io production-assets.codepen.io https://js.stripe.com 'sha256-XNBp89FG76amD8BqrJzyflxOF9PaWPqPqvJfKZPCv7M=' 'sha256-YCNoU9DNiinACbd8n6UPyB/8vj0kXvhkOni9/06SuYw=' 'sha256-PZjP7OR6mBEtnvXIZfCZ5PuOlxoDF1LDZL8aj8c42rw='; style-src 'report-sample' 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self'; connect-src 'self' developer.allizom.org bcd.developer.allizom.org bcd.developer.mozilla.org updates.developer.allizom.org updates.developer.mozilla.org https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com https://incoming.telemetry.mozilla.org https://observatory-api.mdn.allizom.net https://observatory-api.mdn.mozilla.net https://api.github.com/search/issues stats.g.doubleclick.net https://api.stripe.com; font-src 'self'; frame-src 'self' interactive-examples.mdn.mozilla.net interactive-examples.mdn.allizom.net mdn.github.io live-samples.mdn.mozilla.net live-samples.mdn.allizom.net *.mdnplay.dev *.mdnyalp.dev *.play.test.mdn.allizom.net https://v2.scrimba.com https://scrimba.com jsfiddle.net www.youtube-nocookie.com codepen.io survey.alchemer.com https://js.stripe.com; img-src 'self' data: *.githubusercontent.com *.googleusercontent.com *.gravatar.com mozillausercontent.com firefoxusercontent.com profile.stage.mozaws.net profile.accounts.firefox.com developer.mozilla.org mdn.dev interactive-examples.mdn.mozilla.net interactive-examples.mdn.allizom.net wikipedia.org upload.wikimedia.org https://mdn.github.io/shared-assets/ https://mdn.dev/ https://*.google-analytics.com https://*.googletagmanager.com www.gstatic.com; manifest-src 'self'; media-src 'self' archive.org videos.cdn.mozilla.net https://mdn.github.io/shared-assets/; child-src 'self'; worker-src 'self';
x-frame-options: DENY
origin-trial: AxVILwizhbMjxFeHOn1P3R8niO1RJY/smaK4B4d1rLzc1gTaxtXMSaTi+FoigYgCw40uFRDwFcEAeqDR+vVLOW4AAABfeyJvcmlnaW4iOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZyIsImZlYXR1cmUiOiJQcml2YXRlQXR0cmlidXRpb25WMiIsImV4cGlyeSI6MTc0MjA3OTYwMH0=
x-cloud-trace-context: ce6d83200847d763c5aafff63ec6a428
date: Wed, 15 Oct 2025 00:13:19 GMT
server: Google Frontend
via: 1.1 google
vary: Accept-Encoding
content-encoding: gzip
x-cache: miss
WEBGL_compressed_texture_pvrtc extension - Web APIs | MDN
The compressed texture formats are exposed by four constants and can be used in two functions: compressedTexImage2D()
(where the height
and width
parameters must be powers of 2) and compressedTexSubImage2D()
(where the height and width parameters must equal the current values of the existing texture and the xoffset
and yoffset
parameters must be 0).
ext.COMPRESSED_RGB_PVRTC_4BPPV1_IMG
RGB compression in 4-bit mode. One block for each 4×4 pixels.
ext.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG
RGBA compression in 4-bit mode. One block for each 4×4 pixels.
ext.COMPRESSED_RGB_PVRTC_2BPPV1_IMG
RGB compression in 2-bit mode. One block for each 8×4 pixels.
ext.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG
RGBA compression in 2-bit mode. One block for each 8×4 pixels.
const ext = gl.getExtension("WEBGL_compressed_texture_pvrtc");
const texture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.compressedTexImage2D(
gl.TEXTURE_2D,
0,
ext.COMPRESSED_RGB_PVRTC_4BPPV1_IMG,
512,
512,
0,
textureData,
);