PageRenderTime 26ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglGL30.java

https://gitlab.com/dlts/libgdx
Java | 651 lines | 519 code | 117 blank | 15 comment | 37 complexity | 8f503d4d46e9c254b321ac071e270a77 MD5 | raw file
  1. /*******************************************************************************
  2. * Copyright 2011 See AUTHORS file.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. ******************************************************************************/
  16. package com.badlogic.gdx.backends.lwjgl;
  17. import java.nio.Buffer;
  18. import java.nio.ByteBuffer;
  19. import java.nio.DoubleBuffer;
  20. import java.nio.FloatBuffer;
  21. import java.nio.IntBuffer;
  22. import java.nio.LongBuffer;
  23. import java.nio.ShortBuffer;
  24. import org.lwjgl.opengl.GL11;
  25. import org.lwjgl.opengl.GL12;
  26. import org.lwjgl.opengl.GL15;
  27. import org.lwjgl.opengl.GL20;
  28. import org.lwjgl.opengl.GL21;
  29. import org.lwjgl.opengl.GL30;
  30. import org.lwjgl.opengl.GL31;
  31. import org.lwjgl.opengl.GL32;
  32. import org.lwjgl.opengl.GL33;
  33. import org.lwjgl.opengl.GL40;
  34. import org.lwjgl.opengl.GL41;
  35. import org.lwjgl.opengl.GL43;
  36. import com.badlogic.gdx.utils.GdxRuntimeException;
  37. class LwjglGL30 extends LwjglGL20 implements com.badlogic.gdx.graphics.GL30 {
  38. @Override
  39. public void glReadBuffer (int mode) {
  40. GL11.glReadBuffer(mode);
  41. }
  42. @Override
  43. public void glDrawRangeElements (int mode, int start, int end, int count, int type, Buffer indices) {
  44. if(indices instanceof ByteBuffer) GL12.glDrawRangeElements(mode, start, end, (ByteBuffer)indices);
  45. else if(indices instanceof ShortBuffer) GL12.glDrawRangeElements(mode, start, end, (ShortBuffer)indices);
  46. else if(indices instanceof IntBuffer) GL12.glDrawRangeElements(mode, start, end, (IntBuffer)indices);
  47. else throw new GdxRuntimeException("indices must be byte, short or int buffer");
  48. }
  49. @Override
  50. public void glDrawRangeElements (int mode, int start, int end, int count, int type, int offset) {
  51. GL12.glDrawRangeElements(mode, start, end, count, type, offset);
  52. }
  53. @Override
  54. public void glTexImage3D (int target, int level, int internalformat, int width, int height, int depth, int border, int format,
  55. int type, Buffer pixels) {
  56. if (pixels == null)
  57. GL12.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, (ByteBuffer)null);
  58. else if (pixels instanceof ByteBuffer)
  59. GL12.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, (ByteBuffer)pixels);
  60. else if (pixels instanceof ShortBuffer)
  61. GL12.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, (ShortBuffer)pixels);
  62. else if (pixels instanceof IntBuffer)
  63. GL12.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, (IntBuffer)pixels);
  64. else if (pixels instanceof FloatBuffer)
  65. GL12.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, (FloatBuffer)pixels);
  66. else if (pixels instanceof DoubleBuffer)
  67. GL12.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, (DoubleBuffer)pixels);
  68. else
  69. throw new GdxRuntimeException("Can't use " + pixels.getClass().getName()
  70. + " with this method. Use ByteBuffer, ShortBuffer, IntBuffer, FloatBuffer or DoubleBuffer instead. Blame LWJGL");
  71. }
  72. @Override
  73. public void glTexImage3D (int target, int level, int internalformat, int width, int height, int depth, int border, int format,
  74. int type, int offset) {
  75. GL12.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, offset);
  76. }
  77. @Override
  78. public void glTexSubImage3D (int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth,
  79. int format, int type, Buffer pixels) {
  80. if (pixels instanceof ByteBuffer)
  81. GL12.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, (ByteBuffer)pixels);
  82. else if (pixels instanceof ShortBuffer)
  83. GL12.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, (ShortBuffer)pixels);
  84. else if (pixels instanceof IntBuffer)
  85. GL12.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, (IntBuffer)pixels);
  86. else if (pixels instanceof FloatBuffer)
  87. GL12.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, (FloatBuffer)pixels);
  88. else if (pixels instanceof DoubleBuffer)
  89. GL12.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, (DoubleBuffer)pixels);
  90. else
  91. throw new GdxRuntimeException("Can't use " + pixels.getClass().getName()
  92. + " with this method. Use ByteBuffer, ShortBuffer, IntBuffer, FloatBuffer or DoubleBuffer instead. Blame LWJGL");
  93. }
  94. @Override
  95. public void glTexSubImage3D (int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth,
  96. int format, int type, int offset) {
  97. GL12.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, offset);
  98. }
  99. @Override
  100. public void glCopyTexSubImage3D (int target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width,
  101. int height) {
  102. GL12.glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height);
  103. }
  104. @Override
  105. public void glGenQueries (int n, int[] ids, int offset) {
  106. for(int i = offset; i < offset + n; i++) {
  107. ids[i] = GL15.glGenQueries();
  108. }
  109. }
  110. @Override
  111. public void glGenQueries (int n, IntBuffer ids) {
  112. for(int i = 0; i < n; i++) {
  113. ids.put(GL15.glGenQueries());
  114. }
  115. }
  116. @Override
  117. public void glDeleteQueries (int n, int[] ids, int offset) {
  118. for(int i = offset; i < offset + n; i++) {
  119. GL15.glDeleteQueries(ids[i]);
  120. }
  121. }
  122. @Override
  123. public void glDeleteQueries (int n, IntBuffer ids) {
  124. for(int i = 0; i < n; i++) {
  125. GL15.glDeleteQueries(ids.get());
  126. }
  127. }
  128. @Override
  129. public boolean glIsQuery (int id) {
  130. return GL15.glIsQuery(id);
  131. }
  132. @Override
  133. public void glBeginQuery (int target, int id) {
  134. GL15.glBeginQuery(target, id);
  135. }
  136. @Override
  137. public void glEndQuery (int target) {
  138. GL15.glEndQuery(target);
  139. }
  140. @Override
  141. public void glGetQueryiv (int target, int pname, IntBuffer params) {
  142. GL15.glGetQuery(target, pname, params);
  143. }
  144. @Override
  145. public void glGetQueryObjectuiv (int id, int pname, IntBuffer params) {
  146. GL15.glGetQueryObjectu(id, pname, params);
  147. }
  148. @Override
  149. public boolean glUnmapBuffer (int target) {
  150. return GL15.glUnmapBuffer(target);
  151. }
  152. @Override
  153. public Buffer glGetBufferPointerv (int target, int pname) {
  154. return GL15.glGetBufferPointer(target, pname);
  155. }
  156. @Override
  157. public void glDrawBuffers (int n, IntBuffer bufs) {
  158. GL20.glDrawBuffers(bufs);
  159. }
  160. @Override
  161. public void glUniformMatrix2x3fv (int location, int count, boolean transpose, FloatBuffer value) {
  162. GL21.glUniformMatrix2x3(location, transpose, value);
  163. }
  164. @Override
  165. public void glUniformMatrix3x2fv (int location, int count, boolean transpose, FloatBuffer value) {
  166. GL21.glUniformMatrix3x2(location, transpose, value);
  167. }
  168. @Override
  169. public void glUniformMatrix2x4fv (int location, int count, boolean transpose, FloatBuffer value) {
  170. GL21.glUniformMatrix2x4(location, transpose, value);
  171. }
  172. @Override
  173. public void glUniformMatrix4x2fv (int location, int count, boolean transpose, FloatBuffer value) {
  174. GL21.glUniformMatrix4x2(location, transpose, value);
  175. }
  176. @Override
  177. public void glUniformMatrix3x4fv (int location, int count, boolean transpose, FloatBuffer value) {
  178. GL21.glUniformMatrix3x4(location, transpose, value);
  179. }
  180. @Override
  181. public void glUniformMatrix4x3fv (int location, int count, boolean transpose, FloatBuffer value) {
  182. GL21.glUniformMatrix4x3(location, transpose, value);
  183. }
  184. @Override
  185. public void glBlitFramebuffer (int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1,
  186. int mask, int filter) {
  187. GL30.glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
  188. }
  189. @Override
  190. public void glBindFramebuffer (int target, int framebuffer) {
  191. GL30.glBindFramebuffer(target, framebuffer);
  192. }
  193. @Override
  194. public void glBindRenderbuffer (int target, int renderbuffer) {
  195. GL30.glBindRenderbuffer(target, renderbuffer);
  196. }
  197. @Override
  198. public int glCheckFramebufferStatus (int target) {
  199. return GL30.glCheckFramebufferStatus(target);
  200. }
  201. @Override
  202. public void glDeleteFramebuffers (int n, IntBuffer framebuffers) {
  203. GL30.glDeleteFramebuffers(framebuffers);
  204. }
  205. @Override
  206. public void glDeleteFramebuffer (int framebuffer) {
  207. GL30.glDeleteFramebuffers(framebuffer);
  208. }
  209. @Override
  210. public void glDeleteRenderbuffers (int n, IntBuffer renderbuffers) {
  211. GL30.glDeleteRenderbuffers(renderbuffers);
  212. }
  213. @Override
  214. public void glDeleteRenderbuffer (int renderbuffer) {
  215. GL30.glDeleteRenderbuffers(renderbuffer);
  216. }
  217. @Override
  218. public void glGenerateMipmap (int target) {
  219. GL30.glGenerateMipmap(target);
  220. }
  221. @Override
  222. public void glGenFramebuffers (int n, IntBuffer framebuffers) {
  223. GL30.glGenFramebuffers(framebuffers);
  224. }
  225. @Override
  226. public int glGenFramebuffer () {
  227. return GL30.glGenFramebuffers();
  228. }
  229. @Override
  230. public void glGenRenderbuffers (int n, IntBuffer renderbuffers) {
  231. GL30.glGenRenderbuffers(renderbuffers);
  232. }
  233. @Override
  234. public int glGenRenderbuffer () {
  235. return GL30.glGenRenderbuffers();
  236. }
  237. @Override
  238. public void glGetRenderbufferParameteriv (int target, int pname, IntBuffer params) {
  239. GL30.glGetRenderbufferParameter(target, pname, params);
  240. }
  241. @Override
  242. public boolean glIsFramebuffer (int framebuffer) {
  243. return GL30.glIsFramebuffer(framebuffer);
  244. }
  245. @Override
  246. public boolean glIsRenderbuffer (int renderbuffer) {
  247. return GL30.glIsRenderbuffer(renderbuffer);
  248. }
  249. @Override
  250. public void glRenderbufferStorage (int target, int internalformat, int width, int height) {
  251. GL30.glRenderbufferStorage(target, internalformat, width, height);
  252. }
  253. @Override
  254. public void glRenderbufferStorageMultisample (int target, int samples, int internalformat, int width, int height) {
  255. GL30.glRenderbufferStorageMultisample(target, samples, internalformat, width, height);
  256. }
  257. @Override
  258. public void glFramebufferTexture2D (int target, int attachment, int textarget, int texture, int level) {
  259. GL30.glFramebufferTexture2D(target, attachment, textarget, texture, level);
  260. }
  261. @Override
  262. public void glFramebufferRenderbuffer (int target, int attachment, int renderbuffertarget, int renderbuffer) {
  263. GL30.glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer);
  264. }
  265. @Override
  266. public void glFramebufferTextureLayer (int target, int attachment, int texture, int level, int layer) {
  267. GL30.glFramebufferTextureLayer(target, attachment, texture, level, layer);
  268. }
  269. @Override
  270. public void glFlushMappedBufferRange (int target, int offset, int length) {
  271. GL30.glFlushMappedBufferRange(target, offset, length);
  272. }
  273. @Override
  274. public void glBindVertexArray (int array) {
  275. GL30.glBindVertexArray(array);
  276. }
  277. @Override
  278. public void glDeleteVertexArrays (int n, int[] arrays, int offset) {
  279. for(int i = offset; i < offset + n; i++) {
  280. GL30.glDeleteVertexArrays(arrays[i]);
  281. }
  282. }
  283. @Override
  284. public void glDeleteVertexArrays (int n, IntBuffer arrays) {
  285. GL30.glDeleteVertexArrays(arrays);
  286. }
  287. @Override
  288. public void glGenVertexArrays (int n, int[] arrays, int offset) {
  289. for(int i = offset; i < offset + n; i++) {
  290. arrays[i] = GL30.glGenVertexArrays();
  291. }
  292. }
  293. @Override
  294. public void glGenVertexArrays (int n, IntBuffer arrays) {
  295. GL30.glGenVertexArrays(arrays);
  296. }
  297. @Override
  298. public boolean glIsVertexArray (int array) {
  299. return GL30.glIsVertexArray(array);
  300. }
  301. @Override
  302. public void glBeginTransformFeedback (int primitiveMode) {
  303. GL30.glBeginTransformFeedback(primitiveMode);
  304. }
  305. @Override
  306. public void glEndTransformFeedback () {
  307. GL30.glEndTransformFeedback();
  308. }
  309. @Override
  310. public void glBindBufferRange (int target, int index, int buffer, int offset, int size) {
  311. GL30.glBindBufferRange(target, index, buffer, offset, size);
  312. }
  313. @Override
  314. public void glBindBufferBase (int target, int index, int buffer) {
  315. GL30.glBindBufferBase(target, index, buffer);
  316. }
  317. @Override
  318. public void glTransformFeedbackVaryings (int program, String[] varyings, int bufferMode) {
  319. GL30.glTransformFeedbackVaryings(program, varyings, bufferMode);
  320. }
  321. @Override
  322. public void glVertexAttribIPointer (int index, int size, int type, int stride, int offset) {
  323. GL30.glVertexAttribIPointer(index, size, type, stride, offset);
  324. }
  325. @Override
  326. public void glGetVertexAttribIiv (int index, int pname, IntBuffer params) {
  327. GL30.glGetVertexAttribI(index, pname, params);
  328. }
  329. @Override
  330. public void glGetVertexAttribIuiv (int index, int pname, IntBuffer params) {
  331. GL30.glGetVertexAttribIu(index, pname, params);
  332. }
  333. @Override
  334. public void glVertexAttribI4i (int index, int x, int y, int z, int w) {
  335. GL30.glVertexAttribI4i(index, x, y, z, w);
  336. }
  337. @Override
  338. public void glVertexAttribI4ui (int index, int x, int y, int z, int w) {
  339. GL30.glVertexAttribI4ui(index, x, y, z, w);
  340. }
  341. @Override
  342. public void glGetUniformuiv (int program, int location, IntBuffer params) {
  343. GL30.glGetUniformu(program, location, params);
  344. }
  345. @Override
  346. public int glGetFragDataLocation (int program, String name) {
  347. return GL30.glGetFragDataLocation(program, name);
  348. }
  349. @Override
  350. public void glUniform1uiv (int location, int count, IntBuffer value) {
  351. GL30.glUniform1u(location, value);
  352. }
  353. @Override
  354. public void glUniform3uiv (int location, int count, IntBuffer value) {
  355. GL30.glUniform3u(location, value);
  356. }
  357. @Override
  358. public void glUniform4uiv (int location, int count, IntBuffer value) {
  359. GL30.glUniform4u(location, value);
  360. }
  361. @Override
  362. public void glClearBufferiv (int buffer, int drawbuffer, IntBuffer value) {
  363. GL30.glClearBuffer(buffer, drawbuffer, value);
  364. }
  365. @Override
  366. public void glClearBufferuiv (int buffer, int drawbuffer, IntBuffer value) {
  367. GL30.glClearBufferu(buffer, drawbuffer, value);
  368. }
  369. @Override
  370. public void glClearBufferfv (int buffer, int drawbuffer, FloatBuffer value) {
  371. GL30.glClearBuffer(buffer, drawbuffer, value);
  372. }
  373. @Override
  374. public void glClearBufferfi (int buffer, int drawbuffer, float depth, int stencil) {
  375. GL30.glClearBufferfi(buffer, drawbuffer, depth, stencil);
  376. }
  377. @Override
  378. public String glGetStringi (int name, int index) {
  379. return GL30.glGetStringi(name, index);
  380. }
  381. @Override
  382. public void glCopyBufferSubData (int readTarget, int writeTarget, int readOffset, int writeOffset, int size) {
  383. GL31.glCopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size);
  384. }
  385. @Override
  386. public void glGetUniformIndices (int program, String[] uniformNames, IntBuffer uniformIndices) {
  387. GL31.glGetUniformIndices(program, uniformNames, uniformIndices);
  388. }
  389. @Override
  390. public void glGetActiveUniformsiv (int program, int uniformCount, IntBuffer uniformIndices, int pname, IntBuffer params) {
  391. GL31.glGetActiveUniforms(program, uniformIndices, pname, params);
  392. }
  393. @Override
  394. public int glGetUniformBlockIndex (int program, String uniformBlockName) {
  395. return GL31.glGetUniformBlockIndex(program, uniformBlockName);
  396. }
  397. @Override
  398. public void glGetActiveUniformBlockiv (int program, int uniformBlockIndex, int pname, IntBuffer params) {
  399. params.put(GL31.glGetActiveUniformBlocki(program, uniformBlockIndex, pname));
  400. }
  401. @Override
  402. public void glGetActiveUniformBlockName (int program, int uniformBlockIndex, Buffer length, Buffer uniformBlockName) {
  403. GL31.glGetActiveUniformBlockName(program, uniformBlockIndex, (IntBuffer)length, (ByteBuffer)uniformBlockName);
  404. }
  405. @Override
  406. public String glGetActiveUniformBlockName (int program, int uniformBlockIndex) {
  407. return GL31.glGetActiveUniformBlockName(program, uniformBlockIndex, 1024);
  408. }
  409. @Override
  410. public void glUniformBlockBinding (int program, int uniformBlockIndex, int uniformBlockBinding) {
  411. GL31.glUniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding);
  412. }
  413. @Override
  414. public void glDrawArraysInstanced (int mode, int first, int count, int instanceCount) {
  415. GL31.glDrawArraysInstanced(mode, first, count, instanceCount);
  416. }
  417. @Override
  418. public void glDrawElementsInstanced (int mode, int count, int type, int indicesOffset, int instanceCount) {
  419. GL31.glDrawElementsInstanced(mode, count, type, indicesOffset, instanceCount);
  420. }
  421. @Override
  422. public void glGetInteger64v (int pname, LongBuffer params) {
  423. GL32.glGetInteger64(pname, params);
  424. }
  425. @Override
  426. public void glGetBufferParameteri64v (int target, int pname, LongBuffer params) {
  427. params.put(GL32.glGetBufferParameteri64(target, pname));
  428. }
  429. @Override
  430. public void glGenSamplers (int count, int[] samplers, int offset) {
  431. for(int i = offset; i < offset + count; i++) {
  432. samplers[i] = GL33.glGenSamplers();
  433. }
  434. }
  435. @Override
  436. public void glGenSamplers (int count, IntBuffer samplers) {
  437. GL33.glGenSamplers(samplers);
  438. }
  439. @Override
  440. public void glDeleteSamplers (int count, int[] samplers, int offset) {
  441. for(int i = offset; i < offset + count; i++) {
  442. GL33.glDeleteSamplers(samplers[i]);
  443. }
  444. }
  445. @Override
  446. public void glDeleteSamplers (int count, IntBuffer samplers) {
  447. GL33.glDeleteSamplers(samplers);
  448. }
  449. @Override
  450. public boolean glIsSampler (int sampler) {
  451. return GL33.glIsSampler(sampler);
  452. }
  453. @Override
  454. public void glBindSampler (int unit, int sampler) {
  455. GL33.glBindSampler(unit, sampler);
  456. }
  457. @Override
  458. public void glSamplerParameteri (int sampler, int pname, int param) {
  459. GL33.glSamplerParameteri(sampler, pname, param);
  460. }
  461. @Override
  462. public void glSamplerParameteriv (int sampler, int pname, IntBuffer param) {
  463. GL33.glSamplerParameter(sampler, pname, param);
  464. }
  465. @Override
  466. public void glSamplerParameterf (int sampler, int pname, float param) {
  467. GL33.glSamplerParameterf(sampler, pname, param);
  468. }
  469. @Override
  470. public void glSamplerParameterfv (int sampler, int pname, FloatBuffer param) {
  471. GL33.glSamplerParameter(sampler, pname, param);
  472. }
  473. @Override
  474. public void glGetSamplerParameteriv (int sampler, int pname, IntBuffer params) {
  475. GL33.glGetSamplerParameterI(sampler, pname, params);
  476. }
  477. @Override
  478. public void glGetSamplerParameterfv (int sampler, int pname, FloatBuffer params) {
  479. GL33.glGetSamplerParameter(sampler, pname, params);
  480. }
  481. @Override
  482. public void glVertexAttribDivisor (int index, int divisor) {
  483. GL33.glVertexAttribDivisor(index, divisor);
  484. }
  485. @Override
  486. public void glBindTransformFeedback (int target, int id) {
  487. GL40.glBindTransformFeedback(target, id);
  488. }
  489. @Override
  490. public void glDeleteTransformFeedbacks (int n, int[] ids, int offset) {
  491. for(int i = offset; i < offset + n; i++) {
  492. GL40.glDeleteTransformFeedbacks(ids[i]);
  493. }
  494. }
  495. @Override
  496. public void glDeleteTransformFeedbacks (int n, IntBuffer ids) {
  497. GL40.glDeleteTransformFeedbacks(ids);
  498. }
  499. @Override
  500. public void glGenTransformFeedbacks (int n, int[] ids, int offset) {
  501. for(int i = offset; i < offset + n; i++) {
  502. ids[i] = GL40.glGenTransformFeedbacks();
  503. }
  504. }
  505. @Override
  506. public void glGenTransformFeedbacks (int n, IntBuffer ids) {
  507. GL40.glGenTransformFeedbacks(ids);
  508. }
  509. @Override
  510. public boolean glIsTransformFeedback (int id) {
  511. return GL40.glIsTransformFeedback(id);
  512. }
  513. @Override
  514. public void glPauseTransformFeedback () {
  515. GL40.glPauseTransformFeedback();
  516. }
  517. @Override
  518. public void glResumeTransformFeedback () {
  519. GL40.glResumeTransformFeedback();
  520. }
  521. @Override
  522. public void glProgramParameteri (int program, int pname, int value) {
  523. GL41.glProgramParameteri(program, pname, value);
  524. }
  525. @Override
  526. public void glInvalidateFramebuffer (int target, int numAttachments, IntBuffer attachments) {
  527. GL43.glInvalidateFramebuffer(target, attachments);
  528. }
  529. @Override
  530. public void glInvalidateSubFramebuffer (int target, int numAttachments, IntBuffer attachments, int x, int y, int width,
  531. int height) {
  532. GL43.glInvalidateSubFramebuffer(target, attachments, x, y, width, height);
  533. }
  534. }