1 /*
2  * Copyright (c) 2002-2012 LWJGL Project
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  *   notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  *   notice, this list of conditions and the following disclaimer in the
14  *   documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of 'LWJGL' nor the names of
17  *   its contributors may be used to endorse or promote products derived
18  *   from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 package org.lwjgl.opengl;
33 
34 import org.lwjgl.PointerBuffer;
35 import org.lwjgl.util.generator.*;
36 import org.lwjgl.util.generator.opengl.*;
37 
38 import java.nio.Buffer;
39 import java.nio.IntBuffer;
40 
41 public interface GL44 {
42 
43 	/** Implementation-dependent state which constrains the maximum value of stride parameters to vertex array pointer-setting commands. */
44 	int GL_MAX_VERTEX_ATTRIB_STRIDE = 0x82E5;
45 
46 	// ------------------------------------------------------------------
47 	// ----------------------[ ARB_buffer_storage ]----------------------
48 	// ------------------------------------------------------------------
49 
50 	/**
51 	 * Accepted in the <flags> parameter of BufferStorage and
52 	 * NamedBufferStorageEXT:
53 	 */
54 	int GL_MAP_PERSISTENT_BIT  = 0x0040,
55 		GL_MAP_COHERENT_BIT    = 0x0080,
56 		GL_DYNAMIC_STORAGE_BIT = 0x0100,
57 		GL_CLIENT_STORAGE_BIT  = 0x0200;
58 
59 	/** Accepted by the <pname> parameter of GetBufferParameter{i|i64}v:\ */
60 
61 	int GL_BUFFER_IMMUTABLE_STORAGE = 0x821F,
62 		GL_BUFFER_STORAGE_FLAGS     = 0x8220;
63 
64 	/** Accepted by the <barriers> parameter of MemoryBarrier: */
65 	int GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT = 0x00004000;
66 
glBufferStorage(@Lenum int target, @AutoSize(R) @GLsizeiptr long size, @Const @GLbyte @GLshort @GLint @GLuint64 @GLfloat @GLdouble Buffer data, @GLbitfield int flags)67 	void glBufferStorage(@GLenum int target,
68 	                     @AutoSize("data") @GLsizeiptr long size,
69 	                     @Const
70 	                     @GLbyte
71 	                     @GLshort
72 	                     @GLint
73 	                     @GLuint64
74 	                     @GLfloat
75 	                     @GLdouble Buffer data,
76 	                     @GLbitfield int flags);
77 
78 	@Alternate("glBufferStorage")
glBufferStorage2(@Lenum int target, @GLsizeiptr long size, @Constant(R) @Const Buffer data, @GLbitfield int flags)79 	void glBufferStorage2(@GLenum int target,
80 	                      @GLsizeiptr long size,
81 	                      @Constant("0L") @Const Buffer data,
82 	                      @GLbitfield int flags);
83 
84 	// -----------------------------------------------------------------
85 	// ----------------------[ ARB_clear_texture ]----------------------
86 	// -----------------------------------------------------------------
87 
88 	/**
89 	 * Accepted by the <pname> parameter for GetInternalformativ and
90 	 * GetInternalformati64v:
91 	 */
92 	int GL_CLEAR_TEXTURE = 0x9365;
93 
glClearTexImage(@Luint int texture, int level, @GLenum int format, @GLenum int type, @Check(value = R, canBeNull = true) @Const @GLbyte @GLshort @GLint @GLuint64 @GLfloat @GLdouble Buffer data)94 	void glClearTexImage(@GLuint int texture, int level,
95 	                     @GLenum int format, @GLenum int type,
96 	                     @Check(value = "1", canBeNull = true)
97 	                     @Const
98 	                     @GLbyte
99 	                     @GLshort
100 	                     @GLint
101 	                     @GLuint64
102 	                     @GLfloat
103 	                     @GLdouble Buffer data);
104 
glClearTexSubImage(@Luint int texture, int level, int xoffset, int yoffset, int zoffset, @GLsizei int width, @GLsizei int height, @GLsizei int depth, @GLenum int format, @GLenum int type, @Check(value = R, canBeNull = true) @Const @GLbyte @GLshort @GLint @GLuint64 @GLfloat @GLdouble Buffer data)105 	void glClearTexSubImage(@GLuint int texture, int level,
106 	                        int xoffset, int yoffset, int zoffset,
107 	                        @GLsizei int width, @GLsizei int height, @GLsizei int depth,
108 	                        @GLenum int format, @GLenum int type,
109 	                        @Check(value = "1", canBeNull = true)
110 	                        @Const
111 	                        @GLbyte
112 	                        @GLshort
113 	                        @GLint
114 	                        @GLuint64
115 	                        @GLfloat
116 	                        @GLdouble Buffer data);
117 
118 	// --------------------------------------------------------------------
119 	// ----------------------[ ARB_enhanced_layouts ]----------------------
120 	// --------------------------------------------------------------------
121 
122 	/** Accepted in the <props> array of GetProgramResourceiv: */
123 	int GL_LOCATION_COMPONENT               = 0x934A,
124 		GL_TRANSFORM_FEEDBACK_BUFFER_INDEX  = 0x934B,
125 		GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE = 0x934C;
126 
127 	// --------------------------------------------------------------
128 	// ----------------------[ ARB_multi_bind ]----------------------
129 	// --------------------------------------------------------------
130 
glBindBuffersBase(@Lenum int target, @GLuint int first, @GLsizei int count, @Check(value = R, canBeNull = true) @Const @GLuint IntBuffer buffers)131 	void glBindBuffersBase(@GLenum int target, @GLuint int first, @GLsizei int count, @Check(value = "count", canBeNull = true) @Const @GLuint IntBuffer buffers);
132 
glBindBuffersRange(@Lenum int target, @GLuint int first, @GLsizei int count, @Check(value = R, canBeNull = true) @Const @GLuint IntBuffer buffers, @Check(value = R, canBeNull = true) @Const @GLintptr PointerBuffer offsets, @Check(value = R, canBeNull = true) @Const @GLsizeiptr PointerBuffer sizes)133 	void glBindBuffersRange(@GLenum int target, @GLuint int first, @GLsizei int count,
134 	                        @Check(value = "count", canBeNull = true) @Const @GLuint IntBuffer buffers,
135 	                        @Check(value = "count", canBeNull = true) @Const @GLintptr PointerBuffer offsets,
136 	                        @Check(value = "count", canBeNull = true) @Const @GLsizeiptr PointerBuffer sizes);
137 
glBindTextures(@Luint int first, @GLsizei int count, @Check(value = R, canBeNull = true) @Const @GLuint IntBuffer textures)138 	void glBindTextures(@GLuint int first, @GLsizei int count, @Check(value = "count", canBeNull = true) @Const @GLuint IntBuffer textures);
139 
glBindSamplers(@Luint int first, @GLsizei int count, @Check(value = R, canBeNull = true) @Const @GLuint IntBuffer samplers)140 	void glBindSamplers(@GLuint int first, @GLsizei int count, @Check(value = "count", canBeNull = true) @Const @GLuint IntBuffer samplers);
141 
glBindImageTextures(@Luint int first, @GLsizei int count, @Check(value = R, canBeNull = true) @Const @GLuint IntBuffer textures)142 	void glBindImageTextures(@GLuint int first, @GLsizei int count, @Check(value = "count", canBeNull = true) @Const @GLuint IntBuffer textures);
143 
glBindVertexBuffers(@Luint int first, @GLsizei int count, @Check(value = R, canBeNull = true) @Const @GLuint IntBuffer buffers, @Check(value = R, canBeNull = true) @Const @GLintptr PointerBuffer offsets, @Check(value = R, canBeNull = true) @Const @GLsizei IntBuffer strides)144 	void glBindVertexBuffers(@GLuint int first, @GLsizei int count,
145 	                         @Check(value = "count", canBeNull = true) @Const @GLuint IntBuffer buffers,
146 	                         @Check(value = "count", canBeNull = true) @Const @GLintptr PointerBuffer offsets,
147 	                         @Check(value = "count", canBeNull = true) @Const @GLsizei IntBuffer strides);
148 
149 	// -----------------------------------------------------------------------
150 	// ----------------------[ ARB_query_buffer_object ]----------------------
151 	// -----------------------------------------------------------------------
152 
153 	/**
154 	 * Accepted by the <pname> parameter of GetQueryObjectiv, GetQueryObjectuiv,
155 	 * GetQueryObjecti64v and GetQueryObjectui64v:
156 	 */
157 	int GL_QUERY_RESULT_NO_WAIT = 0x9194;
158 
159 	/**
160 	 * Accepted by the <target> parameter of BindBuffer, BufferData,
161 	 * BufferSubData, MapBuffer, UnmapBuffer, MapBufferRange, GetBufferSubData,
162 	 * GetBufferParameteriv, GetBufferParameteri64v, GetBufferPointerv,
163 	 * ClearBufferSubData, and the <readtarget> and <writetarget> parameters of
164 	 * CopyBufferSubData:
165 	 */
166 	int GL_QUERY_BUFFER = 0x9192;
167 
168 	/**
169 	 * Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv,
170 	 * and GetDoublev:
171 	 */
172 	int GL_QUERY_BUFFER_BINDING = 0x9193;
173 
174 	/** Accepted in the <barriers> bitfield in MemoryBarrier: */
175 	int GL_QUERY_BUFFER_BARRIER_BIT = 0x00008000;
176 
177 	// --------------------------------------------------------------------------------
178 	// ----------------------[ ARB_texture_mirror_clamp_to_edge ]----------------------
179 	// --------------------------------------------------------------------------------
180 
181 	/**
182 	 * Accepted by the <param> parameter of TexParameter{if}, SamplerParameter{if}
183 	 * and SamplerParameter{if}v, and by the <params> parameter of
184 	 * TexParameter{if}v, TexParameterI{i ui}v and SamplerParameterI{i ui}v when
185 	 * their <pname> parameter is TEXTURE_WRAP_S, TEXTURE_WRAP_T, or
186 	 * TEXTURE_WRAP_R:
187 	 */
188 	int GL_MIRROR_CLAMP_TO_EDGE = 0x8743;
189 
190 }