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

/backends/gdx-backend-lwjgl3/src/com/badlogic/gdx/backends/lwjgl3/Lwjgl3GL30.java

https://gitlab.com/dlts/libgdx
Java | 652 lines | 519 code | 116 blank | 17 comment | 37 complexity | 9bb1a7f1bcb742b54583cf5bc2ccb521 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.lwjgl3;
  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 Lwjgl3GL30 extends Lwjgl3GL20 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.glGetQueryiv(target, pname, params);
  143. }
  144. @Override
  145. public void glGetQueryObjectuiv (int id, int pname, IntBuffer params) {
  146. GL15.glGetQueryObjectuiv(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. // FIXME glGetBufferPointerv needs a proper translation
  155. // return GL15.glGetBufferPointer(target, pname);
  156. throw new UnsupportedOperationException("Not implemented");
  157. }
  158. @Override
  159. public void glDrawBuffers (int n, IntBuffer bufs) {
  160. GL20.glDrawBuffers(bufs);
  161. }
  162. @Override
  163. public void glUniformMatrix2x3fv (int location, int count, boolean transpose, FloatBuffer value) {
  164. GL21.glUniformMatrix2x3fv(location, transpose, value);
  165. }
  166. @Override
  167. public void glUniformMatrix3x2fv (int location, int count, boolean transpose, FloatBuffer value) {
  168. GL21.glUniformMatrix3x2fv(location, transpose, value);
  169. }
  170. @Override
  171. public void glUniformMatrix2x4fv (int location, int count, boolean transpose, FloatBuffer value) {
  172. GL21.glUniformMatrix2x4fv(location, transpose, value);
  173. }
  174. @Override
  175. public void glUniformMatrix4x2fv (int location, int count, boolean transpose, FloatBuffer value) {
  176. GL21.glUniformMatrix4x2fv(location, transpose, value);
  177. }
  178. @Override
  179. public void glUniformMatrix3x4fv (int location, int count, boolean transpose, FloatBuffer value) {
  180. GL21.glUniformMatrix3x4fv(location, transpose, value);
  181. }
  182. @Override
  183. public void glUniformMatrix4x3fv (int location, int count, boolean transpose, FloatBuffer value) {
  184. GL21.glUniformMatrix4x3fv(location, transpose, value);
  185. }
  186. @Override
  187. public void glBlitFramebuffer (int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1,
  188. int mask, int filter) {
  189. GL30.glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
  190. }
  191. @Override
  192. public void glBindFramebuffer (int target, int framebuffer) {
  193. GL30.glBindFramebuffer(target, framebuffer);
  194. }
  195. @Override
  196. public void glBindRenderbuffer (int target, int renderbuffer) {
  197. GL30.glBindRenderbuffer(target, renderbuffer);
  198. }
  199. @Override
  200. public int glCheckFramebufferStatus (int target) {
  201. return GL30.glCheckFramebufferStatus(target);
  202. }
  203. @Override
  204. public void glDeleteFramebuffers (int n, IntBuffer framebuffers) {
  205. GL30.glDeleteFramebuffers(framebuffers);
  206. }
  207. @Override
  208. public void glDeleteFramebuffer (int framebuffer) {
  209. GL30.glDeleteFramebuffers(framebuffer);
  210. }
  211. @Override
  212. public void glDeleteRenderbuffers (int n, IntBuffer renderbuffers) {
  213. GL30.glDeleteRenderbuffers(renderbuffers);
  214. }
  215. @Override
  216. public void glDeleteRenderbuffer (int renderbuffer) {
  217. GL30.glDeleteRenderbuffers(renderbuffer);
  218. }
  219. @Override
  220. public void glGenerateMipmap (int target) {
  221. GL30.glGenerateMipmap(target);
  222. }
  223. @Override
  224. public void glGenFramebuffers (int n, IntBuffer framebuffers) {
  225. GL30.glGenFramebuffers(framebuffers);
  226. }
  227. @Override
  228. public int glGenFramebuffer () {
  229. return GL30.glGenFramebuffers();
  230. }
  231. @Override
  232. public void glGenRenderbuffers (int n, IntBuffer renderbuffers) {
  233. GL30.glGenRenderbuffers(renderbuffers);
  234. }
  235. @Override
  236. public int glGenRenderbuffer () {
  237. return GL30.glGenRenderbuffers();
  238. }
  239. @Override
  240. public void glGetRenderbufferParameteriv (int target, int pname, IntBuffer params) {
  241. GL30.glGetRenderbufferParameteriv(target, pname, params);
  242. }
  243. @Override
  244. public boolean glIsFramebuffer (int framebuffer) {
  245. return GL30.glIsFramebuffer(framebuffer);
  246. }
  247. @Override
  248. public boolean glIsRenderbuffer (int renderbuffer) {
  249. return GL30.glIsRenderbuffer(renderbuffer);
  250. }
  251. @Override
  252. public void glRenderbufferStorage (int target, int internalformat, int width, int height) {
  253. GL30.glRenderbufferStorage(target, internalformat, width, height);
  254. }
  255. @Override
  256. public void glRenderbufferStorageMultisample (int target, int samples, int internalformat, int width, int height) {
  257. GL30.glRenderbufferStorageMultisample(target, samples, internalformat, width, height);
  258. }
  259. @Override
  260. public void glFramebufferTexture2D (int target, int attachment, int textarget, int texture, int level) {
  261. GL30.glFramebufferTexture2D(target, attachment, textarget, texture, level);
  262. }
  263. @Override
  264. public void glFramebufferRenderbuffer (int target, int attachment, int renderbuffertarget, int renderbuffer) {
  265. GL30.glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer);
  266. }
  267. @Override
  268. public void glFramebufferTextureLayer (int target, int attachment, int texture, int level, int layer) {
  269. GL30.glFramebufferTextureLayer(target, attachment, texture, level, layer);
  270. }
  271. @Override
  272. public void glFlushMappedBufferRange (int target, int offset, int length) {
  273. GL30.glFlushMappedBufferRange(target, offset, length);
  274. }
  275. @Override
  276. public void glBindVertexArray (int array) {
  277. GL30.glBindVertexArray(array);
  278. }
  279. @Override
  280. public void glDeleteVertexArrays (int n, int[] arrays, int offset) {
  281. for(int i = offset; i < offset + n; i++) {
  282. GL30.glDeleteVertexArrays(arrays[i]);
  283. }
  284. }
  285. @Override
  286. public void glDeleteVertexArrays (int n, IntBuffer arrays) {
  287. GL30.glDeleteVertexArrays(arrays);
  288. }
  289. @Override
  290. public void glGenVertexArrays (int n, int[] arrays, int offset) {
  291. for(int i = offset; i < offset + n; i++) {
  292. arrays[i] = GL30.glGenVertexArrays();
  293. }
  294. }
  295. @Override
  296. public void glGenVertexArrays (int n, IntBuffer arrays) {
  297. GL30.glGenVertexArrays(arrays);
  298. }
  299. @Override
  300. public boolean glIsVertexArray (int array) {
  301. return GL30.glIsVertexArray(array);
  302. }
  303. @Override
  304. public void glBeginTransformFeedback (int primitiveMode) {
  305. GL30.glBeginTransformFeedback(primitiveMode);
  306. }
  307. @Override
  308. public void glEndTransformFeedback () {
  309. GL30.glEndTransformFeedback();
  310. }
  311. @Override
  312. public void glBindBufferRange (int target, int index, int buffer, int offset, int size) {
  313. GL30.glBindBufferRange(target, index, buffer, offset, size);
  314. }
  315. @Override
  316. public void glBindBufferBase (int target, int index, int buffer) {
  317. GL30.glBindBufferBase(target, index, buffer);
  318. }
  319. @Override
  320. public void glTransformFeedbackVaryings (int program, String[] varyings, int bufferMode) {
  321. GL30.glTransformFeedbackVaryings(program, varyings, bufferMode);
  322. }
  323. @Override
  324. public void glVertexAttribIPointer (int index, int size, int type, int stride, int offset) {
  325. GL30.glVertexAttribIPointer(index, size, type, stride, offset);
  326. }
  327. @Override
  328. public void glGetVertexAttribIiv (int index, int pname, IntBuffer params) {
  329. GL30.glGetVertexAttribIiv(index, pname, params);
  330. }
  331. @Override
  332. public void glGetVertexAttribIuiv (int index, int pname, IntBuffer params) {
  333. GL30.glGetVertexAttribIuiv(index, pname, params);
  334. }
  335. @Override
  336. public void glVertexAttribI4i (int index, int x, int y, int z, int w) {
  337. GL30.glVertexAttribI4i(index, x, y, z, w);
  338. }
  339. @Override
  340. public void glVertexAttribI4ui (int index, int x, int y, int z, int w) {
  341. GL30.glVertexAttribI4ui(index, x, y, z, w);
  342. }
  343. @Override
  344. public void glGetUniformuiv (int program, int location, IntBuffer params) {
  345. GL30.glGetUniformuiv(program, location, params);
  346. }
  347. @Override
  348. public int glGetFragDataLocation (int program, String name) {
  349. return GL30.glGetFragDataLocation(program, name);
  350. }
  351. @Override
  352. public void glUniform1uiv (int location, int count, IntBuffer value) {
  353. GL30.glUniform1uiv(location, value);
  354. }
  355. @Override
  356. public void glUniform3uiv (int location, int count, IntBuffer value) {
  357. GL30.glUniform3uiv(location, value);
  358. }
  359. @Override
  360. public void glUniform4uiv (int location, int count, IntBuffer value) {
  361. GL30.glUniform4uiv(location, value);
  362. }
  363. @Override
  364. public void glClearBufferiv (int buffer, int drawbuffer, IntBuffer value) {
  365. GL30.glClearBufferiv(buffer, drawbuffer, value);
  366. }
  367. @Override
  368. public void glClearBufferuiv (int buffer, int drawbuffer, IntBuffer value) {
  369. GL30.glClearBufferuiv(buffer, drawbuffer, value);
  370. }
  371. @Override
  372. public void glClearBufferfv (int buffer, int drawbuffer, FloatBuffer value) {
  373. GL30.glClearBufferfv(buffer, drawbuffer, value);
  374. }
  375. @Override
  376. public void glClearBufferfi (int buffer, int drawbuffer, float depth, int stencil) {
  377. GL30.glClearBufferfi(buffer, drawbuffer, depth, stencil);
  378. }
  379. @Override
  380. public String glGetStringi (int name, int index) {
  381. return GL30.glGetStringi(name, index);
  382. }
  383. @Override
  384. public void glCopyBufferSubData (int readTarget, int writeTarget, int readOffset, int writeOffset, int size) {
  385. GL31.glCopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size);
  386. }
  387. @Override
  388. public void glGetUniformIndices (int program, String[] uniformNames, IntBuffer uniformIndices) {
  389. GL31.glGetUniformIndices(program, uniformNames, uniformIndices);
  390. }
  391. @Override
  392. public void glGetActiveUniformsiv (int program, int uniformCount, IntBuffer uniformIndices, int pname, IntBuffer params) {
  393. GL31.glGetActiveUniformsiv(program, uniformIndices, pname, params);
  394. }
  395. @Override
  396. public int glGetUniformBlockIndex (int program, String uniformBlockName) {
  397. return GL31.glGetUniformBlockIndex(program, uniformBlockName);
  398. }
  399. @Override
  400. public void glGetActiveUniformBlockiv (int program, int uniformBlockIndex, int pname, IntBuffer params) {
  401. params.put(GL31.glGetActiveUniformBlocki(program, uniformBlockIndex, pname));
  402. }
  403. @Override
  404. public void glGetActiveUniformBlockName (int program, int uniformBlockIndex, Buffer length, Buffer uniformBlockName) {
  405. GL31.glGetActiveUniformBlockName(program, uniformBlockIndex, (IntBuffer)length, (ByteBuffer)uniformBlockName);
  406. }
  407. @Override
  408. public String glGetActiveUniformBlockName (int program, int uniformBlockIndex) {
  409. return GL31.glGetActiveUniformBlockName(program, uniformBlockIndex, 1024);
  410. }
  411. @Override
  412. public void glUniformBlockBinding (int program, int uniformBlockIndex, int uniformBlockBinding) {
  413. GL31.glUniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding);
  414. }
  415. @Override
  416. public void glDrawArraysInstanced (int mode, int first, int count, int instanceCount) {
  417. GL31.glDrawArraysInstanced(mode, first, count, instanceCount);
  418. }
  419. @Override
  420. public void glDrawElementsInstanced (int mode, int count, int type, int indicesOffset, int instanceCount) {
  421. GL31.glDrawElementsInstanced(mode, count, type, indicesOffset, instanceCount);
  422. }
  423. @Override
  424. public void glGetInteger64v (int pname, LongBuffer params) {
  425. GL32.glGetInteger64v(pname, params);
  426. }
  427. @Override
  428. public void glGetBufferParameteri64v (int target, int pname, LongBuffer params) {
  429. params.put(GL32.glGetBufferParameteri64(target, pname));
  430. }
  431. @Override
  432. public void glGenSamplers (int count, int[] samplers, int offset) {
  433. for(int i = offset; i < offset + count; i++) {
  434. samplers[i] = GL33.glGenSamplers();
  435. }
  436. }
  437. @Override
  438. public void glGenSamplers (int count, IntBuffer samplers) {
  439. GL33.glGenSamplers(samplers);
  440. }
  441. @Override
  442. public void glDeleteSamplers (int count, int[] samplers, int offset) {
  443. for(int i = offset; i < offset + count; i++) {
  444. GL33.glDeleteSamplers(samplers[i]);
  445. }
  446. }
  447. @Override
  448. public void glDeleteSamplers (int count, IntBuffer samplers) {
  449. GL33.glDeleteSamplers(samplers);
  450. }
  451. @Override
  452. public boolean glIsSampler (int sampler) {
  453. return GL33.glIsSampler(sampler);
  454. }
  455. @Override
  456. public void glBindSampler (int unit, int sampler) {
  457. GL33.glBindSampler(unit, sampler);
  458. }
  459. @Override
  460. public void glSamplerParameteri (int sampler, int pname, int param) {
  461. GL33.glSamplerParameteri(sampler, pname, param);
  462. }
  463. @Override
  464. public void glSamplerParameteriv (int sampler, int pname, IntBuffer param) {
  465. GL33.glSamplerParameteriv(sampler, pname, param);
  466. }
  467. @Override
  468. public void glSamplerParameterf (int sampler, int pname, float param) {
  469. GL33.glSamplerParameterf(sampler, pname, param);
  470. }
  471. @Override
  472. public void glSamplerParameterfv (int sampler, int pname, FloatBuffer param) {
  473. GL33.glSamplerParameterfv(sampler, pname, param);
  474. }
  475. @Override
  476. public void glGetSamplerParameteriv (int sampler, int pname, IntBuffer params) {
  477. GL33.glGetSamplerParameterIiv(sampler, pname, params);
  478. }
  479. @Override
  480. public void glGetSamplerParameterfv (int sampler, int pname, FloatBuffer params) {
  481. GL33.glGetSamplerParameterfv(sampler, pname, params);
  482. }
  483. @Override
  484. public void glVertexAttribDivisor (int index, int divisor) {
  485. GL33.glVertexAttribDivisor(index, divisor);
  486. }
  487. @Override
  488. public void glBindTransformFeedback (int target, int id) {
  489. GL40.glBindTransformFeedback(target, id);
  490. }
  491. @Override
  492. public void glDeleteTransformFeedbacks (int n, int[] ids, int offset) {
  493. for(int i = offset; i < offset + n; i++) {
  494. GL40.glDeleteTransformFeedbacks(ids[i]);
  495. }
  496. }
  497. @Override
  498. public void glDeleteTransformFeedbacks (int n, IntBuffer ids) {
  499. GL40.glDeleteTransformFeedbacks(ids);
  500. }
  501. @Override
  502. public void glGenTransformFeedbacks (int n, int[] ids, int offset) {
  503. for(int i = offset; i < offset + n; i++) {
  504. ids[i] = GL40.glGenTransformFeedbacks();
  505. }
  506. }
  507. @Override
  508. public void glGenTransformFeedbacks (int n, IntBuffer ids) {
  509. GL40.glGenTransformFeedbacks(ids);
  510. }
  511. @Override
  512. public boolean glIsTransformFeedback (int id) {
  513. return GL40.glIsTransformFeedback(id);
  514. }
  515. @Override
  516. public void glPauseTransformFeedback () {
  517. GL40.glPauseTransformFeedback();
  518. }
  519. @Override
  520. public void glResumeTransformFeedback () {
  521. GL40.glResumeTransformFeedback();
  522. }
  523. @Override
  524. public void glProgramParameteri (int program, int pname, int value) {
  525. GL41.glProgramParameteri(program, pname, value);
  526. }
  527. @Override
  528. public void glInvalidateFramebuffer (int target, int numAttachments, IntBuffer attachments) {
  529. GL43.glInvalidateFramebuffer(target, attachments);
  530. }
  531. @Override
  532. public void glInvalidateSubFramebuffer (int target, int numAttachments, IntBuffer attachments, int x, int y, int width,
  533. int height) {
  534. GL43.glInvalidateSubFramebuffer(target, attachments, x, y, width, height);
  535. }
  536. }