--[[// lxg | Lux Graphics typedef struct lxgContext_s* lxgContextPTR; typedef struct lxgBuffer_s* lxgBufferPTR; typedef struct lxgStreamHost_s* lxgStreamHostPTR; typedef struct lxgVertexDecl_s* lxgVertexDeclPTR; typedef struct lxgVertexPointer_s* lxgVertexPointerPTR; typedef struct lxgVertexElement_s* lxgVertexElementPTR; typedef struct lxgVertexState_s* lxgVertexStatePTR; typedef struct lxgFeedbackState_s* lxgFeedbackStatePTR; typedef struct lxgTextureImage_s* lxgTextureImagePTR; typedef struct lxgSampler_s* lxgSamplerPTR; typedef struct lxgTexture_s* lxgTexturePTR; typedef struct lxgRenderBuffer_s* lxgRenderBufferPTR; typedef struct lxgTextureUpdate_s* lxgTextureUpdatePTR; typedef struct lxgProgramParameter_s* lxgProgramParameterPTR; typedef struct lxgDomainProgram_s* lxgDomainProgramPTR; typedef struct lxgProgram_s* lxgProgramPTR; typedef struct lxgProgramData_s* lxgProgramDataPTR; typedef struct lxgRenderTarget_s* lxgRenderTargetPTR; typedef struct lxgViewPort_s* lxgViewPortPTR; typedef struct lxgViewPortMrt_s* lxgViewPortMrtPTR; typedef struct lxgFrameBounds_s* lxgFrameBoundsPTR; typedef struct lxgRenderAssign_s* lxgRenderAssignPTR; typedef struct lxgBlendMrt_s* lxgBlendMrtPTR; typedef struct lxgBlend_s* lxgBlendPTR; typedef struct lxgStencil_s* lxgStencilPTR; typedef struct lxgLogic_s* lxgLogicPTR; typedef struct lxgDepth_s* lxgDepthPTR; typedef flags32 lxgRenderFlag_t; typedef enum lxgCompareMode_e{ LUXGFX_COMPARE_NEVER, LUXGFX_COMPARE_LESS, LUXGFX_COMPARE_EQUAL, LUXGFX_COMPARE_LEQUAL, LUXGFX_COMPARE_GREATER, LUXGFX_COMPARE_NOTEQUAL, LUXGFX_COMPARE_GEQUAL, LUXGFX_COMPARE_ALWAYS, LUXGFX_COMPARE_DONTEXECUTE, LUXGFX_COMPARE_ILLEGAL, }lxGLCompareMode_t; typedef enum lxgAccessMode_e{ LUXGFX_ACCESS_READ, LUXGFX_ACCESS_WRITE, LUXGFX_ACCESS_READWRITE, LUXGFX_ACCESS_WRITEDISCARD, LUXGFX_ACCESS_WRITEDISCARDALL, LUXGFX_ACCESSES, }lxgAccessMode_t; enum{ LUXGFX_MAX_TEXTURE_IMAGES = 32, LUXGFX_MAX_RENDERTARGETS = 16, LUXGFX_MAX_RWTEXTURE_IMAGES = 8, LUXGFX_MAX_UNIFORM_BUFFERS = (12*5), LUXGFX_MAX_TEXTURE_MIPMAPS = 16, LUXGFX_MAX_VERTEX_STREAMS = 8, }; typedef enum lxGLCompareMode_e{ LUXGL_COMPARE_NEVER = GL_NEVER, LUXGL_COMPARE_LESS = GL_LESS, LUXGL_COMPARE_EQUAL = GL_EQUAL, LUXGL_COMPARE_LEQUAL = GL_LEQUAL, LUXGL_COMPARE_GREATER = GL_GREATER, LUXGL_COMPARE_NOTEQUAL = GL_NOTEQUAL, LUXGL_COMPARE_GEQUAL = GL_GEQUAL, LUXGL_COMPARE_ALWAYS = GL_ALWAYS, LUXGL_COMPARE_DONTEXECUTE = 0xFFFFFFFFu, }lxGLCompareMode_t; typedef enum lxGLStencilMode_e{ LUXGL_STENCIL_KEEP = GL_KEEP, LUXGL_STENCIL_ZERO = GL_ZERO, LUXGL_STENCIL_REPLACE = GL_REPLACE, LUXGL_STENCIL_INCR_SAT = GL_INCR, LUXGL_STENCIL_DECR_SAT = GL_DECR, LUXGL_STENCIL_INVERT = GL_INVERT, LUXGL_STENCIL_INCR = GL_INCR_WRAP, LUXGL_STENCIL_DECR = GL_DECR_WRAP, }lxGLStencilMode_t; typedef enum lxGLBlendWeight_e{ LUXGL_BLENDW_ZERO = GL_ZERO, LUXGL_BLENDW_ONE = GL_ONE, LUXGL_BLENDW_RGB_SRC = GL_SRC_COLOR, LUXGL_BLENDW_RGB_DST = GL_DST_COLOR, LUXGL_BLENDW_A_SRC = GL_SRC_ALPHA, LUXGL_BLENDW_A_DST = GL_DST_ALPHA, LUXGL_BLENDW_INVRGB_SRC = GL_ONE_MINUS_SRC_COLOR, LUXGL_BLENDW_INVRGB_DST = GL_ONE_MINUS_DST_COLOR, LUXGL_BLENDW_INVA_SRC = GL_ONE_MINUS_SRC_ALPHA, LUXGL_BLENDW_INVA_DST = GL_ONE_MINUS_DST_ALPHA, LUXGL_BLENDW_UNKOWN = 0xFFFFABCD, }lxGLBlendWeight_t; typedef enum lxGLBlendEquation_e{ LUXGL_BLENDE_ADD = GL_FUNC_ADD, LUXGL_BLENDE_SUB = GL_FUNC_SUBTRACT, LUXGL_BLENDE_SUB_REV = GL_FUNC_REVERSE_SUBTRACT, LUXGL_BLENDE_MIN = GL_MIN, LUXGL_BLENDE_MAX = GL_MAX, LUXGL_BLENDE_UNKOWN = 0xFFFFABCD, }lxGLBlendEquation_t; typedef enum lxGLLogicOp_e{ LUXGL_LOGICOP_CLEAR = GL_CLEAR, LUXGL_LOGICOP_SET = GL_SET, LUXGL_LOGICOP_COPY = GL_COPY, LUXGL_LOGICOP_INVERTED = GL_COPY_INVERTED, LUXGL_LOGICOP_NOOP = GL_NOOP, LUXGL_LOGICOP_INVERT = GL_INVERT, LUXGL_LOGICOP_AND = GL_AND, LUXGL_LOGICOP_NAND = GL_NAND, LUXGL_LOGICOP_OR = GL_OR, LUXGL_LOGICOP_NOR = GL_NOR, LUXGL_LOGICOP_XOR = GL_XOR, LUXGL_LOGICOP_EQUIV = GL_EQUIV, LUXGL_LOGICOP_AND_REVERSE = GL_AND_REVERSE, LUXGL_LOGICOP_AND_INVERTED = GL_AND_INVERTED, LUXGL_LOGICOP_OR_REVERSE = GL_OR_REVERSE, LUXGL_LOGICOP_OR_INVERTED = GL_OR_INVERTED, LUXGL_LOGICOP_ILLEGAL = 0, }lxGLLogicOp_t; typedef enum lxGLPrimitiveType_e{ LUXGL_POINTS = GL_POINTS, LUXGL_TRIANGLES = GL_TRIANGLES, LUXGL_TRIANGLE_STRIP = GL_TRIANGLE_STRIP, LUXGL_TRIANGLE_FAN = GL_TRIANGLE_FAN, LUXGL_LINES = GL_LINES, LUXGL_LINE_LOOP = GL_LINE_LOOP, LUXGL_LINE_STRIP = GL_LINE_STRIP, LUXGL_QUADS = GL_QUADS, LUXGL_QUAD_STRIP = GL_QUAD_STRIP, LUXGL_LINE_ADJ = GL_LINES_ADJACENCY, LUXGL_LINE_STRIP_ADJ = GL_LINE_STRIP_ADJACENCY, LUXGL_TRIANGLE_STRIP_ADJ = GL_TRIANGLE_STRIP_ADJACENCY, LUXGL_TRIANGLE_ADJ = GL_TRIANGLES_ADJACENCY, LUXGL_PATCHES = GL_PATCHES, LUXGL_POLYGON = GL_POLYGON, }lxGLPrimitiveType_t; typedef enum lxGLTextureTarget_e{ LUXGL_TEXTURE_1D = GL_TEXTURE_1D, LUXGL_TEXTURE_2D = GL_TEXTURE_2D, LUXGL_TEXTURE_3D = GL_TEXTURE_3D, LUXGL_TEXTURE_RECT = GL_TEXTURE_RECTANGLE, LUXGL_TEXTURE_1DARRAY = GL_TEXTURE_1D_ARRAY, LUXGL_TEXTURE_2DARRAY = GL_TEXTURE_2D_ARRAY, LUXGL_TEXTURE_CUBE = GL_TEXTURE_CUBE_MAP, LUXGL_TEXTURE_CUBEARRAY = GL_TEXTURE_CUBE_MAP_ARRAY, LUXGL_TEXTURE_2DMS = GL_TEXTURE_2D_MULTISAMPLE, LUXGL_TEXTURE_2DMSARRAY = GL_TEXTURE_2D_MULTISAMPLE_ARRAY, LUXGL_TEXTURE_BUFFER = GL_TEXTURE_BUFFER, LUXGL_TEXTURE_RENDERBUFFER = GL_TEXTURE_RENDERBUFFER_NV, LUXGL_TEXTURE_INVALID = 0, }lxGLTextureTarget_t; typedef enum lxGLBufferTarget_e{ LUXGL_BUFFER_VERTEX = GL_ARRAY_BUFFER, LUXGL_BUFFER_INDEX = GL_ELEMENT_ARRAY_BUFFER, LUXGL_BUFFER_PIXELWRITE = GL_PIXEL_PACK_BUFFER, LUXGL_BUFFER_PIXELREAD = GL_PIXEL_UNPACK_BUFFER, LUXGL_BUFFER_UNIFORM = GL_UNIFORM_BUFFER, LUXGL_BUFFER_TEXTURE = GL_TEXTURE_BUFFER, LUXGL_BUFFER_FEEDBACK = GL_TRANSFORM_FEEDBACK_BUFFER, LUXGL_BUFFER_CPYWRITE = GL_COPY_WRITE_BUFFER, LUXGL_BUFFER_CPYREAD = GL_COPY_READ_BUFFER, LUXGL_BUFFER_DRAWINDIRECT = GL_DRAW_INDIRECT_BUFFER, LUXGL_BUFFER_NVVIDEO = 0x9020, //FIXME GL_VIDEO_BUFFER_NV; LUXGL_BUFFER_NVPARAM_VERTEX = GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV, LUXGL_BUFFER_NVPARAM_GEOMETRY = GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV, LUXGL_BUFFER_NVPARAM_FRAGMENT = GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV, LUXGL_BUFFER_NVPARAM_TESSCTRL = GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV, LUXGL_BUFFER_NVPARAM_TESSEVAL = GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV, LUXGL_BUFFER_INVALID = 0, }lxGLBufferTarget_t; typedef enum lxGLShaderType_e{ LUXGL_SHADER_VERTEX = GL_VERTEX_SHADER, LUXGL_SHADER_FRAGMENT = GL_FRAGMENT_SHADER, LUXGL_SHADER_GEOMETRY = GL_GEOMETRY_SHADER, LUXGL_SHADER_TESSCTRL = GL_TESS_CONTROL_SHADER, LUXGL_SHADER_TESSEVAL = GL_TESS_EVALUATION_SHADER, }lxGLShaderType_t; typedef enum lxGLProgramType_e{ LUXGL_PROGRAM_VERTEX = GL_VERTEX_PROGRAM_ARB, LUXGL_PROGRAM_FRAGMENT = GL_FRAGMENT_PROGRAM_ARB, LUXGL_PROGRAM_GEOMETRY = GL_GEOMETRY_PROGRAM_NV, LUXGL_PROGRAM_TESSCTRL = GL_TESS_CONTROL_PROGRAM_NV, LUXGL_PROGRAM_TESSEVAL = GL_TESS_EVALUATION_PROGRAM_NV, }lxGLProgramType_t; typedef enum lxGLParameterType_e{ LUXGL_PARAM_FLOAT = GL_FLOAT, LUXGL_PARAM_FLOAT2 = GL_FLOAT_VEC2, LUXGL_PARAM_FLOAT3 = GL_FLOAT_VEC3, LUXGL_PARAM_FLOAT4 = GL_FLOAT_VEC4, LUXGL_PARAM_INT = GL_INT, LUXGL_PARAM_INT2 = GL_INT_VEC2, LUXGL_PARAM_INT3 = GL_INT_VEC3, LUXGL_PARAM_INT4 = GL_INT_VEC4, LUXGL_PARAM_UINT = GL_UNSIGNED_INT, LUXGL_PARAM_UINT2 = GL_UNSIGNED_INT_VEC2, LUXGL_PARAM_UINT3 = GL_UNSIGNED_INT_VEC3, LUXGL_PARAM_UINT4 = GL_UNSIGNED_INT_VEC4, LUXGL_PARAM_BOOL = GL_BOOL, LUXGL_PARAM_BOOL2 = GL_BOOL_VEC2, LUXGL_PARAM_BOOL3 = GL_BOOL_VEC3, LUXGL_PARAM_BOOL4 = GL_BOOL_VEC4, LUXGL_PARAM_MAT2 = GL_FLOAT_MAT2, LUXGL_PARAM_MAT3 = GL_FLOAT_MAT3, LUXGL_PARAM_MAT4 = GL_FLOAT_MAT4, LUXGL_PARAM_MAT2x3 = GL_FLOAT_MAT2x3, LUXGL_PARAM_MAT2x4 = GL_FLOAT_MAT2x4, LUXGL_PARAM_MAT3x2 = GL_FLOAT_MAT3x2, LUXGL_PARAM_MAT3x4 = GL_FLOAT_MAT3x4, LUXGL_PARAM_MAT4x2 = GL_FLOAT_MAT4x2, LUXGL_PARAM_MAT4x3 = GL_FLOAT_MAT4x3, LUXGL_PARAM_SAMPLER_1D = GL_SAMPLER_1D, LUXGL_PARAM_SAMPLER_2D = GL_SAMPLER_2D, LUXGL_PARAM_SAMPLER_3D = GL_SAMPLER_3D, LUXGL_PARAM_SAMPLER_CUBE = GL_SAMPLER_CUBE, LUXGL_PARAM_SAMPLER_2DRECT = GL_SAMPLER_2D_RECT, LUXGL_PARAM_SAMPLER_2DMS = GL_SAMPLER_2D_MULTISAMPLE, LUXGL_PARAM_SAMPLER_1DARRAY = GL_SAMPLER_1D_ARRAY, LUXGL_PARAM_SAMPLER_2DARRAY = GL_SAMPLER_2D_ARRAY, LUXGL_PARAM_SAMPLER_CUBEARRAY = GL_SAMPLER_CUBE_MAP_ARRAY, LUXGL_PARAM_SAMPLER_2DMSARRAY = GL_SAMPLER_2D_MULTISAMPLE_ARRAY, LUXGL_PARAM_SAMPLER_BUFFER = GL_SAMPLER_BUFFER, LUXGL_PARAM_ISAMPLER_1D = GL_INT_SAMPLER_1D, LUXGL_PARAM_ISAMPLER_2D = GL_INT_SAMPLER_2D, LUXGL_PARAM_ISAMPLER_3D = GL_INT_SAMPLER_3D, LUXGL_PARAM_ISAMPLER_CUBE = GL_INT_SAMPLER_CUBE, LUXGL_PARAM_ISAMPLER_2DRECT = GL_INT_SAMPLER_2D_RECT, LUXGL_PARAM_ISAMPLER_2DMS = GL_INT_SAMPLER_2D_MULTISAMPLE, LUXGL_PARAM_ISAMPLER_1DARRAY = GL_INT_SAMPLER_1D_ARRAY, LUXGL_PARAM_ISAMPLER_2DARRAY = GL_INT_SAMPLER_2D_ARRAY, LUXGL_PARAM_ISAMPLER_CUBEARRAY = GL_INT_SAMPLER_CUBE_MAP_ARRAY, LUXGL_PARAM_ISAMPLER_2DMSARRAY = GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY, LUXGL_PARAM_ISAMPLER_BUFFER = GL_INT_SAMPLER_BUFFER, LUXGL_PARAM_USAMPLER_1D = GL_UNSIGNED_INT_SAMPLER_1D, LUXGL_PARAM_USAMPLER_2D = GL_UNSIGNED_INT_SAMPLER_2D, LUXGL_PARAM_USAMPLER_3D = GL_UNSIGNED_INT_SAMPLER_3D, LUXGL_PARAM_USAMPLER_CUBE = GL_UNSIGNED_INT_SAMPLER_CUBE, LUXGL_PARAM_USAMPLER_2DRECT = GL_UNSIGNED_INT_SAMPLER_2D_RECT, LUXGL_PARAM_USAMPLER_2DMS = GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE, LUXGL_PARAM_USAMPLER_1DARRAY = GL_UNSIGNED_INT_SAMPLER_1D_ARRAY, LUXGL_PARAM_USAMPLER_2DARRAY = GL_UNSIGNED_INT_SAMPLER_2D_ARRAY, LUXGL_PARAM_USAMPLER_CUBEARRAY = GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY, LUXGL_PARAM_USAMPLER_2DMSARRAY = GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY, LUXGL_PARAM_USAMPLER_BUFFER = GL_UNSIGNED_INT_SAMPLER_BUFFER, LUXGL_PARAM_SAMPLER_1D_SHADOW = GL_SAMPLER_1D_SHADOW, LUXGL_PARAM_SAMPLER_2D_SHADOW = GL_SAMPLER_2D_SHADOW, LUXGL_PARAM_SAMPLER_CUBE_SHADOW = GL_SAMPLER_CUBE_SHADOW, LUXGL_PARAM_SAMPLER_2DRECT_SHADOW = GL_SAMPLER_2D_RECT_SHADOW, LUXGL_PARAM_SAMPLER_1DARRAY_SHADOW = GL_SAMPLER_1D_ARRAY_SHADOW, LUXGL_PARAM_SAMPLER_2DARRAY_SHADOW = GL_SAMPLER_2D_ARRAY_SHADOW, LUXGL_PARAM_SAMPLER_CUBEARRAY_SHADOW = GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW, LUXGL_PARAM_IMAGE_1D = GL_IMAGE_1D_EXT, LUXGL_PARAM_IMAGE_2D = GL_IMAGE_2D_EXT, LUXGL_PARAM_IMAGE_3D = GL_IMAGE_3D_EXT, LUXGL_PARAM_IMAGE_CUBE = GL_IMAGE_CUBE_EXT, LUXGL_PARAM_IMAGE_2DRECT = GL_IMAGE_2D_RECT_EXT, LUXGL_PARAM_IMAGE_2DMS = GL_IMAGE_2D_MULTISAMPLE_EXT, LUXGL_PARAM_IMAGE_1DARRAY = GL_IMAGE_1D_ARRAY_EXT, LUXGL_PARAM_IMAGE_2DARRAY = GL_IMAGE_2D_ARRAY_EXT, LUXGL_PARAM_IMAGE_CUBEARRAY = GL_IMAGE_CUBE_MAP_ARRAY_EXT, LUXGL_PARAM_IMAGE_2DMSARRAY = GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT, LUXGL_PARAM_IMAGE_BUFFER = GL_IMAGE_BUFFER_EXT, LUXGL_PARAM_IIMAGE_1D = GL_INT_IMAGE_1D_EXT, LUXGL_PARAM_IIMAGE_2D = GL_INT_IMAGE_2D_EXT, LUXGL_PARAM_IIMAGE_3D = GL_INT_IMAGE_3D_EXT, LUXGL_PARAM_IIMAGE_CUBE = GL_INT_IMAGE_CUBE_EXT, LUXGL_PARAM_IIMAGE_2DRECT = GL_INT_IMAGE_2D_RECT_EXT, LUXGL_PARAM_IIMAGE_2DMS = GL_INT_IMAGE_2D_MULTISAMPLE_EXT, LUXGL_PARAM_IIMAGE_1DARRAY = GL_INT_IMAGE_1D_ARRAY_EXT, LUXGL_PARAM_IIMAGE_2DARRAY = GL_INT_IMAGE_2D_ARRAY_EXT, LUXGL_PARAM_IIMAGE_CUBEARRAY = GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT, LUXGL_PARAM_IIMAGE_2DMSARRAY = GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT, LUXGL_PARAM_IIMAGE_BUFFER = GL_INT_IMAGE_BUFFER_EXT, LUXGL_PARAM_UIMAGE_1D = GL_UNSIGNED_INT_IMAGE_1D_EXT, LUXGL_PARAM_UIMAGE_2D = GL_UNSIGNED_INT_IMAGE_2D_EXT, LUXGL_PARAM_UIMAGE_3D = GL_UNSIGNED_INT_IMAGE_3D_EXT, LUXGL_PARAM_UIMAGE_CUBE = GL_UNSIGNED_INT_IMAGE_CUBE_EXT, LUXGL_PARAM_UIMAGE_2DRECT = GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT, LUXGL_PARAM_UIMAGE_2DMS = GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT, LUXGL_PARAM_UIMAGE_1DARRAY = GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT, LUXGL_PARAM_UIMAGE_2DARRAY = GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT, LUXGL_PARAM_UIMAGE_CUBEARRAY = GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT, LUXGL_PARAM_UIMAGE_2DMSARRAY = GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT, LUXGL_PARAM_UIMAGE_BUFFER = GL_UNSIGNED_INT_IMAGE_BUFFER_EXT, LUXGL_PARAM_BUFFER = 0xABCDEF, }lxGLParameterType_t; /// __LUXLUXGL_BUFFER_H__ typedef enum lxgBufferMode_e{ LUXGFX_BUFFERMODE_DRAW, LUXGFX_BUFFERMODE_READ, LUXGFX_BUFFERMODE_COPY, LUXGFX_BUFFERMODES, }lxgBufferMode_t; typedef enum lxgBufferUpdate_e{ LUXGFX_BUFFERUPDATE_STATIC, LUXGFX_BUFFERUPDATE_DYNAMIC, LUXGFX_BUFFERUPDATE_STREAM, LUXGFX_BUFFERUPDATES, }lxgBufferUpdate_t; typedef struct lxgBuffer_s{ lxGLBufferTarget_t gltarget; GLuint glid; GLuint64 address; lxgContextPTR ctx; void* user; void* mapped; lxgAccessMode_t maptype; uint mapstart; uint maplength; uint size; uint used; lxgBufferMode_t mode; lxgBufferUpdate_t update; }lxgBuffer_t; // raises used and returns offset withn padsize from start or -1 on error uint lxgBuffer_alloc(lxgBufferPTR buffer, uint needed, uint padsize); void lxgBuffer_bind(lxgBufferPTR buffer, lxGLBufferTarget_t type); void lxgBuffer_bindIndexed(lxgBufferPTR buffer, lxGLBufferTarget_t type, uint idx); void lxgBuffer_bindRanged(lxgBufferPTR buffer, lxGLBufferTarget_t type, uint idx, size_t offset, size_t size); // implicitly call lxgBuffer_setGL with type used on init booln lxgBuffer_map(lxgBufferPTR buffer, void**ptr, lxgAccessMode_t type); booln lxgBuffer_mapRange(lxgBufferPTR buffer, void**ptr, uint from, uint length, lxgAccessMode_t type, booln manualflush, booln unsynch); booln lxgBuffer_flushRange(lxgBufferPTR buffer, uint from, uint length); booln lxgBuffer_unmap(lxgBufferPTR buffer); booln lxgBuffer_copy(lxgBufferPTR buffer, uint bufferoffset, lxgBufferPTR src, uint srcoffset, uint size); GLuint64 lxgBuffer_addressNV(lxgBufferPTR buffer); void lxgBuffer_residentNV(lxgBufferPTR buffer, lxgAccessMode_t mode); void lxgBuffer_unresidentNV(lxgBufferPTR buffer); void lxgBuffer_deinit(lxgBufferPTR buffer, lxgContextPTR ctx); void lxgBuffer_reset(lxgBufferPTR buffer, void* data); void lxgBuffer_init(lxgBufferPTR buffer, lxgContextPTR ctx, lxgBufferMode_t hint, lxgBufferUpdate_t update, uint size, void* data); /// __LUXLUXGFX_VERTEX_H__ ////////////////////////////////////////////////////////////////////////// // VertexAttrib typedef enum lxgVertexAttrib_e{ LUXGFX_VERTEX_ATTRIB_POS, LUXGFX_VERTEX_ATTRIB_ATTR1, // Cg: blendweights LUXGFX_VERTEX_ATTRIB_NORMAL, LUXGFX_VERTEX_ATTRIB_COLOR, LUXGFX_VERTEX_ATTRIB_ATTR4, LUXGFX_VERTEX_ATTRIB_ATTR5, // Cg: fogcoord,tessfactor LUXGFX_VERTEX_ATTRIB_ATTR6, // Cg: pointsize LUXGFX_VERTEX_ATTRIB_ATTR7, // Cg: blendindices LUXGFX_VERTEX_ATTRIB_TEXCOORD0, LUXGFX_VERTEX_ATTRIB_TEXCOORD1, LUXGFX_VERTEX_ATTRIB_TEXCOORD2, LUXGFX_VERTEX_ATTRIB_TEXCOORD3, LUXGFX_VERTEX_ATTRIB_ATTR12, LUXGFX_VERTEX_ATTRIB_ATTR13, LUXGFX_VERTEX_ATTRIB_ATTR14, // Cg: tangent LUXGFX_VERTEX_ATTRIB_ATTR15, // Cg: binormal LUXGFX_VERTEX_ATTRIBS, }lxgVertexAttrib_t; ////////////////////////////////////////////////////////////////////////// // lxgVertexElement_t // // assumes maximum vertex size of 256 bytes, and stride as multiple of 2 typedef struct lxgVertexElement_s{ unsigned normalize : 1; unsigned integer : 1; unsigned cnt : 2; unsigned stream : 4; unsigned scalartype : 8; unsigned stridehalf : 8; unsigned offset : 8; }lxgVertexElement_t; ////////////////////////////////////////////////////////////////////////// // lxgVertexPointer typedef struct lxgVertexDecl_s{ flags32 available; uint streams; lxgVertexElement_t table[LUXGFX_VERTEX_ATTRIBS]; }lxgVertexDecl_t; ////////////////////////////////////////////////////////////////////////// // lxgVertexPointer typedef struct lxgStreamHost_s{ lxgBufferPTR buffer; void* ptr; size_t len; }lxgStreamHost_t; typedef struct lxgVertexPointer_s{ lxgVertexElement_t element[LUXGFX_VERTEX_ATTRIBS]; lxgStreamHost_t streams[LUXGFX_MAX_VERTEX_STREAMS]; }lxgVertexPointer_t; typedef struct lxgVertexState_s{ lxgVertexDeclPTR decl; flags32 active; flags32 declvalid; flags32 streamvalid; flags32 declchange; flags32 streamchange; lxgVertexPointer_t setup; }lxgVertexState_t; typedef struct lxgFeedbackState_s{ lxGLPrimitiveType_t capture; int active; flags32 usedvalid; flags32 streamvalid; flags32 streamchange; lxgStreamHost_t streams[LUXGFX_MAX_VERTEX_STREAMS]; }lxgFeedbackState_t; lxgVertexElement_t lxgVertexElement_set( uint cnt, enum lxScalarType_e type, booln normalize, booln integer, uint stride,uint offset, uint stream); void lxgVertexAttribs_apply(flags32 attribs, lxgContextPTR ctx, flags32 changed); void lxgVertexAttribs_applyFIXED(flags32 attribs, lxgContextPTR ctx, flags32 changed); void lxgVertexAttrib_setFloat(lxgVertexAttrib_t attrib, const float* vec4); void lxgVertexAttrib_setInteger(lxgVertexAttrib_t attrib, const int* vec4); void lxgVertexAttrib_setFloatFIXED(lxgVertexAttrib_t attrib, const float* vec4); void lxgVertexDecl_apply( lxgVertexDeclPTR decl, lxgContextPTR ctx ); void lxgVertexSetup_setStreams(lxgContextPTR ctx, lxgVertexDeclPTR decl, lxgStreamHostPTR hosts); void lxgVertexSetup_setStream(lxgContextPTR ctx, uint idx, lxgStreamHostPTR host); void lxgVertexSetup_apply(lxgContextPTR ctx); void lxgVertexSetup_applyFIXED(lxgContextPTR ctx); void lxgVertexSetup_applyNV(lxgContextPTR ctx); void lxgVertexSetup_applyFIXEDNV(lxgContextPTR ctx); void lxgFeedback_enable(lxgContextPTR ctx, lxGLPrimitiveType_t type, int numStreams); void lxgFeedback_disable(lxgContextPTR ctx); void lxgFeedback_pause(lxgContextPTR ctx); void lxgFeedback_resume(lxgContextPTR ctx); void lxgFeedback_applyStreams(lxgContextPTR ctx); void lxgFeedback_setStreams(lxgContextPTR ctx, lxgStreamHostPTR hosts, int numStreams); void lxgFeedback_setStream(lxgContextPTR ctx, uint idx, lxgStreamHostPTR host ); /// __LUXLUXGFX_TEXTURE_H__ typedef enum lxgSamplerFilter_e{ LUXGFX_SAMPLERFILTER_NEAREST, LUXGFX_SAMPLERFILTER_LINEAR, LUXGFX_SAMPLERFILTER_MIPMAP_NEAREST, LUXGFX_SAMPLERFILTER_MIPMAP_LINEAR, LUXGFX_SAMPLERFILTERS, }lxgSamplerFilter_t; typedef enum lxgSamplerAddress_e{ LUXGFX_SAMPLERADDRESS_REPEAT, LUXGFX_SAMPLERADDRESS_MIRROR, LUXGFX_SAMPLERADDRESS_CLAMP, LUXGFX_SAMPLERADDRESS_BORDER, LUXGFX_SAMPLERADDRESSES, }lxgSamplerAddress_t; enum lxgSamplerAttrib_e{ LUXGFX_SAMPLERATTRIB_FILTER = 1<<0, LUXGFX_SAMPLERATTRIB_CMP = 1<<1, LUXGFX_SAMPLERATTRIB_ADDRESS = 1<<2, LUXGFX_SAMPLERATTRIB_ANISO = 1<<3, LUXGFX_SAMPLERATTRIB_LOD = 1<<4, LUXGFX_SAMPLERATTRIB_BORDER = 1<<5, LUXGFX_SAMPLERATTRIB_ALL = (1<<6)-1, }; typedef struct lxgSamplerLod_s{ float bias; float min; float max; }lxgSamplerLod_t; typedef struct lxgSampler_s{ GLuint glid; uint32 incarnation; lxGLCompareMode_t cmpfunc; lxgSamplerFilter_t filter; lxgSamplerAddress_t addru; lxgSamplerAddress_t addrv; lxgSamplerAddress_t addrw; uint aniso; lxgSamplerLod_t lod; float border[4]; }lxgSampler_t; ////////////////////////////////////////////////////////////////////////// typedef enum lxgTextureFlags_e{ LUXGFX_TEXTUREFLAG_AUTOMIPMAP = 1<<0, LUXGFX_TEXTUREFLAG_MANMIPMAP = 1<<1, LUXGFX_TEXTUREFLAG_COMPRESS = 1<<2, LUXGFX_TEXTUREFLAG_COMPRESSED = 1<<3, LUXGFX_TEXTUREFLAG_SAMPLESFIXED = 1<<4, LUXGFX_TEXTUREFLAG_HASLOD = 1<<30, LUXGFX_TEXTUREFLAG_HASCOMPARE = 1<<31, }lxgTextureFlags_t; typedef enum lxgTextureChannel_e{ LUXGFX_TEXTURECHANNEL_RGB, LUXGFX_TEXTURECHANNEL_RGBA, LUXGFX_TEXTURECHANNEL_R, LUXGFX_TEXTURECHANNEL_RG, LUXGFX_TEXTURECHANNEL_SRGB, LUXGFX_TEXTURECHANNEL_SRGBA, LUXGFX_TEXTURECHANNEL_DEPTH, LUXGFX_TEXTURECHANNEL_DEPTHSTENCIL, LUXGFX_TEXTURECHANNEL_ALPHA, LUXGFX_TEXTURECHANNEL_INTENSITY, LUXGFX_TEXTURECHANNEL_LUMINANCE, LUXGFX_TEXTURECHANNEL_LUMINANCEALPHA, LUXGFX_TEXTURECHANNEL_CUSTOM, }lxgTextureChannel_t; typedef enum lxgTextureDataType_e{ LUXGFX_TEXTUREDATA_BASE, LUXGFX_TEXTUREDATA_UNORM8, LUXGFX_TEXTUREDATA_UNORM16, LUXGFX_TEXTUREDATA_SNORM8, LUXGFX_TEXTUREDATA_SNORM16, LUXGFX_TEXTUREDATA_FLOAT16, LUXGFX_TEXTUREDATA_FLOAT32, LUXGFX_TEXTUREDATA_SINT8, LUXGFX_TEXTUREDATA_UINT8, LUXGFX_TEXTUREDATA_SINT16, LUXGFX_TEXTUREDATA_UINT16, LUXGFX_TEXTUREDATA_SINT32, LUXGFX_TEXTUREDATA_UINT32, LUXGFX_TEXTUREDATAS, // for depth LUXGFX_TEXTUREDATA_DEPTH16, LUXGFX_TEXTUREDATA_DEPTH24, LUXGFX_TEXTUREDATA_DEPTH32, LUXGFX_TEXTUREDATA_DEPTH32F, // for RGBA LUXGFX_TEXTUREDATA_UNORM1010102, LUXGFX_TEXTUREDATA_UINT1010102, LUXGFX_TEXTUREDATA_FLOAT111110, // for RGB LUXGFX_TEXTUREDATA_EXP999, LUXGFX_TEXTUREDATA_COMPRESSED, LUXGFX_TEXTUREDATA_COMPRESSED_DXT1, LUXGFX_TEXTUREDATA_COMPRESSED_DXT3, LUXGFX_TEXTUREDATA_COMPRESSED_DXT5, LUXGFX_TEXTUREDATA_COMPRESSED_TC, LUXGFX_TEXTUREDATA_COMPRESSED_SIGNED_TC, LUXGFX_TEXTUREDATA_COMPRESSED_UNORM_BPTC, LUXGFX_TEXTUREDATA_COMPRESSED_FLOAT_BPTC, LUXGFX_TEXTUREDATA_COMPRESSED_SIGNED_FLOAT_BPTC, LUXGFX_TEXTUREDATA_CUSTOM, }lxgTextureDataType_t; typedef struct lxgTexture_s{ lxGLTextureTarget_t gltarget; GLuint glid; lxgSamplerPTR lastSampler; uint32 lastSamplerIncarnation; lxgContextPTR ctx; lxgTextureChannel_t formattype; lxgTextureDataType_t datatype; flags32 flags; int width; int height; int depth; int arraysize; int samples; flags32 mipsdefined; uint miplevels; lxVec3i_t mipsizes[LUXGFX_MAX_TEXTURE_MIPMAPS]; uint pixelsizes[LUXGFX_MAX_TEXTURE_MIPMAPS]; size_t nativesizes[LUXGFX_MAX_TEXTURE_MIPMAPS]; uint components; uint componentsize; lxgSampler_t sampler; GLenum glinternalformat; GLenum gldatatype; GLenum gldataformat; }lxgTexture_t; typedef struct lxgRenderBuffer_s{ GLuint glid; lxgContextPTR ctx; lxgTextureChannel_t formattype; int width; int height; uint samples; }lxgRenderBuffer_t; // for cubemap: z == side // for cubemap array: layer = z/6, side = z%6) typedef struct lxgTextureUpdate_s{ lxVec3i_t from; lxVec3i_t to; lxVec3i_t size; }lxgTextureUpdate_t; ////////////////////////////////////////////////////////////////////////// typedef struct lxgTextureImage_s{ lxgTexturePTR tex; int level; booln layered; int layer; GLenum glformat; GLenum glaccess; }lxgTextureImage_t; ////////////////////////////////////////////////////////////////////////// // Type checks booln lxgTextureChannel_valid(lxgContextPTR ctx, lxgTextureChannel_t channel); booln lxgTextureTarget_valid(lxgContextPTR ctx, lxGLTextureTarget_t type); // lxgTexture // for multisampled textures depth = samples void lxgTexture_init(lxgTexturePTR tex, lxgContextPTR ctx); booln lxgTexture_setup(lxgTexturePTR tex, lxGLTextureTarget_t type, lxgTextureChannel_t format, lxgTextureDataType_t data, int width, int height, int depth, int arraysize, flags32 flags); booln lxgTexture_resize(lxgTexturePTR tex, int width, int height, int depth, int arraysize); void lxgTexture_deinit(lxgTexturePTR tex, lxgContextPTR ctx); booln lxgTexture_readFrame(lxgTexturePTR tex, lxgContextPTR ctx, const lxgTextureUpdatePTR update, uint miplevel); // if scalartype is set to invalid, we assume "native" data (matching // internal) booln lxgTexture_readData(lxgTexturePTR tex, const lxgTextureUpdatePTR update, uint miplevel, enum lxScalarType_e scalar, const void* buffer, uint buffersize); booln lxgTexture_readBuffer(lxgTexturePTR tex, const lxgTextureUpdatePTR update, uint miplevel, enum lxScalarType_e scalar, const lxgBufferPTR buffer, uint bufferoffset); booln lxgTexture_writeData(lxgTexturePTR tex, uint side, booln ascompressed, booln onlydepth, uint mip, enum lxScalarType_e d, void* buffer, uint buffersize); booln lxgTexture_writeBuffer(lxgTexturePTR tex, uint side, booln ascompressed, booln onlydepth, uint mip, enum lxScalarType_e d, lxgBufferPTR buffer, uint bufferoffset); void lxgTexture_getSampler(lxgTexturePTR tex, lxgSamplerPTR sampler); const lxVec3iPTR lxgTexture_getMipSize(lxgTexturePTR tex, uint mipLevel); void lxgTextureUnit_setCompare(lxgContextPTR ctx, uint imageunit, enum lxgCompareMode_e cmp); void lxgTextureUnit_setSampler(lxgContextPTR ctx, uint imageunit, lxgSamplerPTR sampler, flags32 what); void lxgTextureUnit_checkedSampler(lxgContextPTR ctx, uint imageunit, lxgSamplerPTR sampler, flags32 what); ////////////////////////////////////////////////////////////////////////// // lxgSampler_t void lxgSampler_init(lxgSamplerPTR self); void lxgSampler_setAddress(lxgSamplerPTR self, uint n, lxgSamplerAddress_t address); void lxgSampler_setCompare(lxgSamplerPTR self, enum lxgCompareMode_e cmp); void lxgSampler_changed(lxgSamplerPTR self); // require SM4 void lxgSampler_initHW(lxgSamplerPTR self, lxgContextPTR ctx); void lxgSampler_deinitHW(lxgSamplerPTR self, lxgContextPTR ctx); void lxgSampler_updateHW(lxgSamplerPTR self, lxgContextPTR ctx); ////////////////////////////////////////////////////////////////////////// // lxgRenderBuffer booln lxgRenderBuffer_init(lxgRenderBufferPTR rb, lxgContextPTR ctx, lxgTextureChannel_t format, int width, int height, int samples); booln lxgRenderBuffer_change(lxgRenderBufferPTR rb, lxgTextureChannel_t format, int width, int height, int samples); void lxgRenderBuffer_deinit(lxgRenderBufferPTR rb, lxgContextPTR ctx); ////////////////////////////////////////////////////////////////////////// // lxgTextureImage booln lxgTextureImage_init(lxgTextureImagePTR img, lxgContextPTR ctx, lxgTexturePTR tex, lxgAccessMode_t acces, uint level, booln layered, int layer); /// __LUXLUXGFX_RENDERTARGET_H__ typedef struct lxgFrameBounds_s{ int width; int height; }lxgFrameBounds_t; typedef struct lxgViewDepth_s{ double near; double far; }lxgViewDepth_t; typedef struct lxgViewPort_s{ booln scissor; lxRectanglei_t scissorRect; lxRectanglei_t viewRect; lxgViewDepth_t depth; }lxgViewPort_t; typedef struct lxgViewPortMrt_s{ uint numused; flags32 scissored; lxRectanglef_t bounds[LUXGFX_MAX_RENDERTARGETS]; lxRectanglei_t scissors[LUXGFX_MAX_RENDERTARGETS]; lxgViewDepth_t depths[LUXGFX_MAX_RENDERTARGETS]; }lxgViewPortMrt_t; typedef enum lxgRenderTargetType_e{ LUXGFX_RENDERTARGET_DRAW, LUXGFX_RENDERTARGET_READ, LUXGFX_RENDERTARGETS }lxgRenderTargetType_t; typedef struct lxgRenderAssign_s{ lxgTexturePTR tex; lxgRenderBufferPTR rbuf; uint mip; uint layer; }lxgRenderAssign_t; typedef enum lxgRenderAssignType_e{ LUXGFX_RENDERASSIGN_DEPTH, LUXGFX_RENDERASSIGN_STENCIL, LUXGFX_RENDERASSIGN_COLOR0, LUXGFX_RENDERASSIGNS = LUXGFX_RENDERASSIGN_COLOR0 + LUXGFX_MAX_RENDERTARGETS, }lxgRenderAssignType_t; typedef struct lxgRenderTarget_s{ GLuint glid; lxgContextPTR ctx; uint maxidx; flags32 dirty; lxgRenderAssign_t assigns[LUXGFX_RENDERASSIGNS]; booln equalsized; lxgFrameBounds_t bounds; }lxgRenderTarget_t; typedef struct lxgRenderTargetBlit_s{ lxVec2i_t fromStart; lxVec2i_t fromEnd; lxVec2i_t toStart; lxVec2i_t toEnd; }lxgRenderTargetBlit_t; typedef struct lxgRenderTargetBlit_s* lxgRenderTargetBlitPTR; void lxgRenderTarget_init(lxgRenderTargetPTR rt, lxgContextPTR ctx); void lxgRenderTarget_deinit(lxgRenderTargetPTR rt, lxgContextPTR ctx); void lxgRenderTarget_applyAssigns(lxgRenderTargetPTR rt, lxgRenderTargetType_t mode); // to and from may be NULL void lxgRenderTarget_applyBlit(lxgRenderTargetPTR to, lxgContextPTR ctx, lxgRenderTargetPTR from, lxgRenderTargetBlitPTR update, flags32 mask, booln linearFilter); void lxgRenderTarget_setAssign(lxgRenderTargetPTR rt, uint assigntype, lxgRenderAssignPTR assign); booln lxgRenderTarget_checkSize(lxgRenderTargetPTR rt); const lxgFrameBoundsPTR lxgRenderTarget_getBounds(lxgRenderTargetPTR rt); // return the actual scissor state (can be enabled indirectly through viewport != framebounds) booln lxgViewPortRect_apply(lxRectangleiPTR rect, lxgContextPTR ctx); booln lxgViewPortScissor_applyState(booln state, lxgContextPTR ctx); booln lxgViewPort_apply(lxgViewPortPTR obj, lxgContextPTR ctx); void lxgViewPort_sync(lxgViewPortPTR obj, lxgContextPTR ctx); void lxgViewPortMrt_apply(lxgViewPortMrtPTR obj, lxgContextPTR ctx); void lxgViewPortMrt_sync(lxgViewPortMrtPTR obj, lxgContextPTR ctx); /// __LUXLUXGFX_STATE_H__ typedef enum lxgWinding_e{ LUXGFX_WIND_CCW, LUXGFX_WIND_CW, }lxgWinding_t; typedef struct lxgRasterizer_s{ lxgWinding_t wind; booln multisample; booln fill; booln depthclamp; float polyoffset; float polyoffsetslope; }lxgRasterizer_t; ////////////////////////////////////////////////////////////////////////// typedef struct lxgAlpha_s{ lxGLCompareMode_t func; float refval; }lxgAlpha_t; typedef struct lxgDepth_s{ lxGLCompareMode_t func; booln clip; }lxgDepth_t; ////////////////////////////////////////////////////////////////////////// typedef struct lxgLogic_s{ lxGLLogicOp_t op; }lxgLogic_t; ////////////////////////////////////////////////////////////////////////// typedef struct lxgStencilOp_s { lxGLStencilMode_t fail; lxGLStencilMode_t zfail; lxGLStencilMode_t zpass; lxGLCompareMode_t func; }lxgStencilOp_t; typedef struct lxgStencil_s{ uint16 refvalue; uint16 mask; lxgStencilOp_t ops[2]; // 0 = front 1 = back }lxgStencil_t; ////////////////////////////////////////////////////////////////////////// typedef struct lxgBlendMode_s{ lxGLBlendWeight_t srcw; lxGLBlendWeight_t dstw; lxGLBlendEquation_t equ; }lxgBlendMode_t; typedef struct lxgBlend_s{ lxgBlendMode_t colormode; lxgBlendMode_t alphamode; }lxgBlend_t; typedef struct lxgBlendMrt_s{ uint16 individual; uint16 numused; flags32 enabled; lxgBlend_t blends[LUXGFX_MAX_RENDERTARGETS]; }lxgBlendMrt_t; ////////////////////////////////////////////////////////////////////////// enum lxgRenderFlag_e { LUXGFX_RFLAG_STENCILWRITE1 = 1<<0, LUXGFX_RFLAG_STENCILWRITE2 = 1<<1, LUXGFX_RFLAG_STENCILWRITE3 = 1<<2, LUXGFX_RFLAG_STENCILWRITE4 = 1<<3, LUXGFX_RFLAG_STENCILWRITE5 = 1<<4, LUXGFX_RFLAG_STENCILWRITE6 = 1<<5, LUXGFX_RFLAG_STENCILWRITE7 = 1<<6, LUXGFX_RFLAG_STENCILWRITE8 = 1<<7, LUXGFX_RFLAG_STENCILWRITE = LUXGFX_RFLAG_STENCILWRITE1 | LUXGFX_RFLAG_STENCILWRITE2 | LUXGFX_RFLAG_STENCILWRITE3 | LUXGFX_RFLAG_STENCILWRITE4 | LUXGFX_RFLAG_STENCILWRITE5 | LUXGFX_RFLAG_STENCILWRITE6 | LUXGFX_RFLAG_STENCILWRITE7 | LUXGFX_RFLAG_STENCILWRITE8, LUXGFX_RFLAG_FRONTCULL = 1<<8, LUXGFX_RFLAG_DEPTHWRITE = 1<<9, LUXGFX_RFLAG_CCW = 1<<10, LUXGFX_RFLAG_CULL = 1<<11, LUXGFX_RFLAG_COLORWRITER = 1<<12, LUXGFX_RFLAG_COLORWRITEG = 1<<13, LUXGFX_RFLAG_COLORWRITEB = 1<<14, LUXGFX_RFLAG_COLORWRITEA = 1<<15, LUXGFX_RFLAG_COLORWRITE = LUXGFX_RFLAG_COLORWRITER | LUXGFX_RFLAG_COLORWRITEG | LUXGFX_RFLAG_COLORWRITEB | LUXGFX_RFLAG_COLORWRITEA, LUXGFX_RFLAG_BLEND = 1<<16, LUXGFX_RFLAG_STENCILTEST = 1<<17, LUXGFX_RFLAG_LOGIC = 1<<18, LUXGFX_RFLAG_DEPTHTEST = 1<<19, LUXGFX_RFLAG_WIRE = 1<<20, }; ////////////////////////////////////////////////////////////////////////// void lxgDepth_init(lxgDepthPTR obj); void lxgDepth_apply(lxgDepthPTR obj, lxgContextPTR ctx); void lxgDepth_sync(lxgDepthPTR obj, lxgContextPTR ctx); void lxgLogic_init(lxgLogicPTR obj); void lxgLogic_apply(lxgLogicPTR obj, lxgContextPTR ctx); void lxgLogic_sync(lxgLogicPTR obj, lxgContextPTR ctx); void lxgStencil_init(lxgStencilPTR obj); void lxgStencil_apply(lxgStencilPTR obj, lxgContextPTR ctx); void lxgStencil_sync(lxgStencilPTR obj, lxgContextPTR ctx); void lxgBlend_init(lxgBlendPTR obj); void lxgBlend_apply(lxgBlendPTR obj, lxgContextPTR ctx); void lxgBlend_sync(lxgBlendPTR obj, lxgContextPTR ctx); void lxgBlendMrt_apply(lxgBlendMrtPTR obj, lxgContextPTR ctx); void lxgBlendMrt_sync(lxgBlendMrtPTR obj, lxgContextPTR ctx); flags32 lxgRenderFlag_init(); flags32 lxgRenderFlag_sync(lxgContextPTR ctx); void lxgRenderFlag_apply(flags32 flags, lxgContextPTR ctx, flags32 changed); const char* lxgRenderFlag_test(lxgContextPTR ctx); void lxgRasterizer_sync(lxgRasterizerPTR raster, lxgContextPTR ctx); typedef enum lxgProgramType_e{ LUXGFX_PROGRAM_NONE, LUXGFX_PROGRAM_GLSL, LUXGFX_PROGRAM_ARBNV, }lxgProgramType_t; typedef enum lxgShaderDomain_e{ LUXGFX_DOMAIN_VERTEX, LUXGFX_DOMAIN_FRAGMENT, LUXGFX_DOMAIN_GEOMETRY, LUXGFX_DOMAIN_TESSCTRL, LUXGFX_DOMAIN_TESSEVAL, LUXGFX_DOMAINS, }lxgProgramDomain_t; typedef void (*lxgParmeterUpdate_fn)(lxgContextPTR ctx, lxgProgramParameterPTR param, void* data); typedef struct lxgProgramParameter_s{ lxGLParameterType_t gltype; union{ GLuint glid; GLenum gltarget; }; GLuint gllocation; lxgParmeterUpdate_fn func; ushort count; bool16 transpose; uint size; const char* name; }lxgProgramParameter_t; typedef struct lxgProgramData_s{ uint numParams; lxgProgramParameterPTR parameters; uint numSampler; lxgProgramParameterPTR samplers; uint numBuffers; lxgProgramParameterPTR buffer; uint numImages; lxgProgramParameterPTR images; }lxgProgramData_t; typedef struct lxgDomainProgram_s{ union{ lxGLShaderType_t gltype; lxGLProgramType_t gltarget; }; GLuint glid; lxgProgramDataPTR data; lxgContextPTR ctx; lxgProgramType_t progtype; }lxgDomainProgram_t; typedef struct lxgProgram_s{ GLuint glid; lxgProgramType_t type; flags32 usedProgs; lxgDomainProgramPTR programs[LUXGFX_DOMAINS]; lxgProgramDataPTR data; lxgContextPTR ctx; }lxgProgram_t; // GLSL void lxgProgramParameter_initFunc(lxgProgramParameterPTR param); void lxgDomainProgram_init(lxgDomainProgramPTR stage, lxgContextPTR ctx, lxgProgramDomain_t type); void lxgDomainProgram_deinit(lxgDomainProgramPTR stage, lxgContextPTR ctx); booln lxgDomainProgram_compile(lxgDomainProgramPTR stage, const char *src, int len); const char* lxgDomainProgram_error(lxgDomainProgramPTR stage, char *buffer, int len); void lxgProgram_init(lxgProgramPTR prog, lxgContextPTR ctx); void lxgProgram_deinit(lxgProgramPTR prog, lxgContextPTR ctx); void lxgProgram_setDomain(lxgProgramPTR prog, lxgProgramDomain_t type, lxgDomainProgramPTR stage); booln lxgProgram_link(lxgProgramPTR prog); const char* lxgProgram_log(lxgProgramPTR prog, char* buffer, int len); // COMMON void lxgProgram_applyParameters(lxgProgramPTR prog, lxgContextPTR ctx, uint num, lxgProgramParameterPTR *params, void **data); void lxgProgram_applySamplers( lxgProgramPTR prog, lxgContextPTR ctx, uint num, lxgProgramParameterPTR *params, lxgTexturePTR *data); void lxgProgram_applyBuffers(lxgProgramPTR prog, lxgContextPTR ctx, uint num, lxgProgramParameterPTR *params, lxgBufferPTR *data); void lxgProgram_applyImages( lxgProgramPTR prog, lxgContextPTR ctx, uint num, lxgProgramParameterPTR *params, lxgTextureImagePTR *data ); // NV/ARB PROGRAM void lxgProgramParameter_initDomainNV(lxgProgramParameterPTR param, lxgProgramDomain_t domain); void lxgProgramParameter_initFuncNV(lxgProgramParameterPTR param); void lxgDomainProgram_initNV(lxgDomainProgramPTR stage, lxgContextPTR ctx, lxgProgramDomain_t type); void lxgDomainProgram_deinitNV(lxgDomainProgramPTR stage, lxgContextPTR ctx); booln lxgDomainProgram_compileNV(lxgDomainProgramPTR stage, const char *src, int len); const char* lxgDomainProgram_errorNV(lxgDomainProgramPTR stage, char *buffer, int len); void lxgProgram_initNV(lxgProgramPTR prog, lxgContextPTR ctx); void lxgProgram_deinitNV(lxgProgramPTR prog, lxgContextPTR ctx); void lxgProgram_setDomainNV(lxgProgramPTR prog, lxgProgramDomain_t type, lxgDomainProgramPTR stage); ////////////////////////////////////////////////////////////////////////// enum lxgCapability_e{ LUXGFX_CAP_POINTSPRITE = 1<<0, LUXGFX_CAP_STENCILWRAP = 1<<1, LUXGFX_CAP_BLENDSEP = 1<<2, LUXGFX_CAP_OCCQUERY = 1<<3, LUXGFX_CAP_FBO = 1<<4, //+DEPTHSTENCIL LUXGFX_CAP_FBOMS = 1<<5, // blit,ms LUXGFX_CAP_DEPTHFLOAT = 1<<6, LUXGFX_CAP_VBO = 1<<7, LUXGFX_CAP_PBO = 1<<8, LUXGFX_CAP_UBO = 1<<9, LUXGFX_CAP_TEX3D = 1<<10, LUXGFX_CAP_TEXRECT = 1<<11, LUXGFX_CAP_TEXNP2 = 1<<12, LUXGFX_CAP_TEXCUBEARRAY = 1<<13, LUXGFX_CAP_TEXS3TC = 1<<14, LUXGFX_CAP_TEXRGTC = 1<<15, LUXGFX_CAP_TEXRW = 1<<16, LUXGFX_CAP_BUFMAPRANGE = 1<<17, LUXGFX_CAP_BUFCOPY = 1<<18, LUXGFX_CAP_SM0 = 1<<20, // DOT3,CROSSBAR,CUBE LUXGFX_CAP_SM1 = 1<<21, // VERTEX,SHADOW LUXGFX_CAP_SM2 = 1<<22, // +FRAGMENT LUXGFX_CAP_SM2EXT = 1<<23, // +DRAWBUFFERS,FLOAT,HLSHADERS LUXGFX_CAP_SM3 = 1<<24, // +NV3/ATI_SHADERLOD LUXGFX_CAP_SM4 = 1<<25, // GL3.3 TEXINT,TEXBUF,TEXARRAY,UBO,FBOMIX // TEXSAMPLER,XFBO,GS,CUBESAMPLE LUXGFX_CAP_SM5 = 1<<26, // GL4.0 }; ////////////////////////////////////////////////////////////////////////// typedef enum lxgGPUVendor_e{ LUXGFX_GPUVENDOR_UNKNOWN, LUXGFX_GPUVENDOR_NVIDIA, LUXGFX_GPUVENDOR_ATI, LUXGFX_GPUVENDOR_INTEL, }lxgGPUVendor_t; typedef enum lxgGPUDomain_e{ LUXGFX_GPUDOMAIN_VERTEX, LUXGFX_GPUDOMAIN_FRAGMENT, LUXGFX_GPUDOMAIN_GEOMETRY, LUXGFX_GPUDOMAIN_TESS_EVAL, LUXGFX_GPUDOMAIN_TESS_CTRL, LUXGFX_GPUDOMAINS, }lxgGPUDomain_t; typedef enum lxgGPUMode_e{ LUXGFX_GPUMODE_FIXED, LUXGFX_GPUMODE_ASM, LUXGFX_GPUMODE_HL, }lxgGPUMode_t; ////////////////////////////////////////////////////////////////////////// typedef struct lxgCapabilites_s{ int texsize; int texsize3d; int texlayers; int texunits; int teximages; int texcoords; int texvtxunits; float texaniso; float pointsize; int drawbuffers; int viewports; int fbosamples; }lxgCapabilites_t; typedef struct lxgContext_s{ flags32 capbits; lxgProgramPTR program; lxgVertexState_t vertex; lxgTexturePTR textures[LUXGFX_MAX_TEXTURE_IMAGES]; lxgSamplerPTR samplers[LUXGFX_MAX_TEXTURE_IMAGES]; lxgRenderTargetPTR rendertargets[LUXGFX_RENDERTARGETS]; lxgTextureImagePTR images[LUXGFX_MAX_RWTEXTURE_IMAGES]; lxgBufferPTR uniform[LUXGFX_MAX_UNIFORM_BUFFERS]; lxgFeedbackState_t feedback; flags32 rflag; lxgBlend_t blend; lxgDepth_t depth; lxgStencil_t stencil; lxgLogic_t logic; lxgViewPort_t viewport; lxgFrameBounds_t framebounds; lxgFrameBounds_t window; lxgBlendMrt_t blendMRT; lxgViewPortMrt_t viewportMRT; lxgCapabilites_t capabilites; }lxgContext_t; ////////////////////////////////////////////////////////////////////////// const char* lxgContext_init(lxgContextPTR ctx); void lxgContext_syncStates(lxgContextPTR ctx); booln lxgContext_checkStates(lxgContextPTR ctx); void lxgContext_resetTextures(lxgContextPTR ctx); void lxgContext_resetVertexStreams(lxgContextPTR ctx); void lxgTexture_apply(lxgTexturePTR obj, lxgContextPTR ctx, uint imageunit); void lxgSampler_apply(lxgSamplerPTR obj, lxgContextPTR ctx, uint imageunit); void lxgTextures_apply(lxgTexturePTR *texs, lxgContextPTR ctx, uint start, uint num); void lxgSamplers_apply(lxgSamplerPTR *samps, lxgContextPTR ctx, uint start, uint num); void lxgTextureImage_apply(lxgTextureImagePTR obj, lxgContextPTR ctx, uint imageunit); void lxgRenderTarget_apply(lxgRenderTargetPTR obj, lxgContextPTR ctx, lxgRenderTargetType_t type); void lxgRenderTarget_applyDraw(lxgRenderTargetPTR obj, lxgContextPTR ctx, booln setViewport); void lxgProgram_apply(lxgProgramPTR obj, lxgContextPTR ctx ); ]] --auto-generated api from ffi headers local api = { ["LUXGFX_COMPARE_NEVER"] = { type ='value', }, ["LUXGFX_COMPARE_LESS"] = { type ='value', }, ["LUXGFX_COMPARE_EQUAL"] = { type ='value', }, ["LUXGFX_COMPARE_LEQUAL"] = { type ='value', }, ["LUXGFX_COMPARE_GREATER"] = { type ='value', }, ["LUXGFX_COMPARE_NOTEQUAL"] = { type ='value', }, ["LUXGFX_COMPARE_GEQUAL"] = { type ='value', }, ["LUXGFX_COMPARE_ALWAYS"] = { type ='value', }, ["LUXGFX_COMPARE_DONTEXECUTE"] = { type ='value', }, ["LUXGFX_COMPARE_ILLEGAL"] = { type ='value', }, ["LUXGFX_ACCESS_READ"] = { type ='value', }, ["LUXGFX_ACCESS_WRITE"] = { type ='value', }, ["LUXGFX_ACCESS_READWRITE"] = { type ='value', }, ["LUXGFX_ACCESS_WRITEDISCARD"] = { type ='value', }, ["LUXGFX_ACCESS_WRITEDISCARDALL"] = { type ='value', }, ["LUXGFX_ACCESSES"] = { type ='value', }, ["LUXGFX_MAX_TEXTURE_IMAGES"] = { type ='value', }, ["LUXGFX_MAX_RENDERTARGETS"] = { type ='value', }, ["LUXGFX_MAX_RWTEXTURE_IMAGES"] = { type ='value', }, ["LUXGFX_MAX_UNIFORM_BUFFERS"] = { type ='value', }, ["LUXGFX_MAX_TEXTURE_MIPMAPS"] = { type ='value', }, ["LUXGFX_MAX_VERTEX_STREAMS"] = { type ='value', }, ["LUXGL_COMPARE_NEVER"] = { type ='value', }, ["LUXGL_COMPARE_LESS"] = { type ='value', }, ["LUXGL_COMPARE_EQUAL"] = { type ='value', }, ["LUXGL_COMPARE_LEQUAL"] = { type ='value', }, ["LUXGL_COMPARE_GREATER"] = { type ='value', }, ["LUXGL_COMPARE_NOTEQUAL"] = { type ='value', }, ["LUXGL_COMPARE_GEQUAL"] = { type ='value', }, ["LUXGL_COMPARE_ALWAYS"] = { type ='value', }, ["LUXGL_COMPARE_DONTEXECUTE"] = { type ='value', }, ["LUXGL_STENCIL_KEEP"] = { type ='value', }, ["LUXGL_STENCIL_ZERO"] = { type ='value', }, ["LUXGL_STENCIL_REPLACE"] = { type ='value', }, ["LUXGL_STENCIL_INCR_SAT"] = { type ='value', }, ["LUXGL_STENCIL_DECR_SAT"] = { type ='value', }, ["LUXGL_STENCIL_INVERT"] = { type ='value', }, ["LUXGL_STENCIL_INCR"] = { type ='value', }, ["LUXGL_STENCIL_DECR"] = { type ='value', }, ["LUXGL_BLENDW_ZERO"] = { type ='value', }, ["LUXGL_BLENDW_ONE"] = { type ='value', }, ["LUXGL_BLENDW_RGB_SRC"] = { type ='value', }, ["LUXGL_BLENDW_RGB_DST"] = { type ='value', }, ["LUXGL_BLENDW_A_SRC"] = { type ='value', }, ["LUXGL_BLENDW_A_DST"] = { type ='value', }, ["LUXGL_BLENDW_INVRGB_SRC"] = { type ='value', }, ["LUXGL_BLENDW_INVRGB_DST"] = { type ='value', }, ["LUXGL_BLENDW_INVA_SRC"] = { type ='value', }, ["LUXGL_BLENDW_INVA_DST"] = { type ='value', }, ["LUXGL_BLENDW_UNKOWN"] = { type ='value', }, ["LUXGL_BLENDE_ADD"] = { type ='value', }, ["LUXGL_BLENDE_SUB"] = { type ='value', }, ["LUXGL_BLENDE_SUB_REV"] = { type ='value', }, ["LUXGL_BLENDE_MIN"] = { type ='value', }, ["LUXGL_BLENDE_MAX"] = { type ='value', }, ["LUXGL_BLENDE_UNKOWN"] = { type ='value', }, ["LUXGL_LOGICOP_CLEAR"] = { type ='value', }, ["LUXGL_LOGICOP_SET"] = { type ='value', }, ["LUXGL_LOGICOP_COPY"] = { type ='value', }, ["LUXGL_LOGICOP_INVERTED"] = { type ='value', }, ["LUXGL_LOGICOP_NOOP"] = { type ='value', }, ["LUXGL_LOGICOP_INVERT"] = { type ='value', }, ["LUXGL_LOGICOP_AND"] = { type ='value', }, ["LUXGL_LOGICOP_NAND"] = { type ='value', }, ["LUXGL_LOGICOP_OR"] = { type ='value', }, ["LUXGL_LOGICOP_NOR"] = { type ='value', }, ["LUXGL_LOGICOP_XOR"] = { type ='value', }, ["LUXGL_LOGICOP_EQUIV"] = { type ='value', }, ["LUXGL_LOGICOP_AND_REVERSE"] = { type ='value', }, ["LUXGL_LOGICOP_AND_INVERTED"] = { type ='value', }, ["LUXGL_LOGICOP_OR_REVERSE"] = { type ='value', }, ["LUXGL_LOGICOP_OR_INVERTED"] = { type ='value', }, ["LUXGL_LOGICOP_ILLEGAL"] = { type ='value', }, ["LUXGL_POINTS"] = { type ='value', }, ["LUXGL_TRIANGLES"] = { type ='value', }, ["LUXGL_TRIANGLE_STRIP"] = { type ='value', }, ["LUXGL_TRIANGLE_FAN"] = { type ='value', }, ["LUXGL_LINES"] = { type ='value', }, ["LUXGL_LINE_LOOP"] = { type ='value', }, ["LUXGL_LINE_STRIP"] = { type ='value', }, ["LUXGL_QUADS"] = { type ='value', }, ["LUXGL_QUAD_STRIP"] = { type ='value', }, ["LUXGL_LINE_ADJ"] = { type ='value', }, ["LUXGL_LINE_STRIP_ADJ"] = { type ='value', }, ["LUXGL_TRIANGLE_STRIP_ADJ"] = { type ='value', }, ["LUXGL_TRIANGLE_ADJ"] = { type ='value', }, ["LUXGL_PATCHES"] = { type ='value', }, ["LUXGL_POLYGON"] = { type ='value', }, ["LUXGL_TEXTURE_1D"] = { type ='value', }, ["LUXGL_TEXTURE_2D"] = { type ='value', }, ["LUXGL_TEXTURE_3D"] = { type ='value', }, ["LUXGL_TEXTURE_RECT"] = { type ='value', }, ["LUXGL_TEXTURE_1DARRAY"] = { type ='value', }, ["LUXGL_TEXTURE_2DARRAY"] = { type ='value', }, ["LUXGL_TEXTURE_CUBE"] = { type ='value', }, ["LUXGL_TEXTURE_CUBEARRAY"] = { type ='value', }, ["LUXGL_TEXTURE_2DMS"] = { type ='value', }, ["LUXGL_TEXTURE_2DMSARRAY"] = { type ='value', }, ["LUXGL_TEXTURE_BUFFER"] = { type ='value', }, ["LUXGL_TEXTURE_RENDERBUFFER"] = { type ='value', }, ["LUXGL_TEXTURE_INVALID"] = { type ='value', }, ["LUXGL_BUFFER_VERTEX"] = { type ='value', }, ["LUXGL_BUFFER_INDEX"] = { type ='value', }, ["LUXGL_BUFFER_PIXELWRITE"] = { type ='value', }, ["LUXGL_BUFFER_PIXELREAD"] = { type ='value', }, ["LUXGL_BUFFER_UNIFORM"] = { type ='value', }, ["LUXGL_BUFFER_TEXTURE"] = { type ='value', }, ["LUXGL_BUFFER_FEEDBACK"] = { type ='value', }, ["LUXGL_BUFFER_CPYWRITE"] = { type ='value', }, ["LUXGL_BUFFER_CPYREAD"] = { type ='value', }, ["LUXGL_BUFFER_DRAWINDIRECT"] = { type ='value', }, ["LUXGL_BUFFER_NVVIDEO"] = { type ='value', }, ["LUXGL_BUFFER_NVPARAM_VERTEX"] = { type ='value', }, ["LUXGL_BUFFER_NVPARAM_GEOMETRY"] = { type ='value', }, ["LUXGL_BUFFER_NVPARAM_FRAGMENT"] = { type ='value', }, ["LUXGL_BUFFER_NVPARAM_TESSCTRL"] = { type ='value', }, ["LUXGL_BUFFER_NVPARAM_TESSEVAL"] = { type ='value', }, ["LUXGL_BUFFER_INVALID"] = { type ='value', }, ["LUXGL_SHADER_VERTEX"] = { type ='value', }, ["LUXGL_SHADER_FRAGMENT"] = { type ='value', }, ["LUXGL_SHADER_GEOMETRY"] = { type ='value', }, ["LUXGL_SHADER_TESSCTRL"] = { type ='value', }, ["LUXGL_SHADER_TESSEVAL"] = { type ='value', }, ["LUXGL_PROGRAM_VERTEX"] = { type ='value', }, ["LUXGL_PROGRAM_FRAGMENT"] = { type ='value', }, ["LUXGL_PROGRAM_GEOMETRY"] = { type ='value', }, ["LUXGL_PROGRAM_TESSCTRL"] = { type ='value', }, ["LUXGL_PROGRAM_TESSEVAL"] = { type ='value', }, ["LUXGL_PARAM_FLOAT"] = { type ='value', }, ["LUXGL_PARAM_FLOAT2"] = { type ='value', }, ["LUXGL_PARAM_FLOAT3"] = { type ='value', }, ["LUXGL_PARAM_FLOAT4"] = { type ='value', }, ["LUXGL_PARAM_INT"] = { type ='value', }, ["LUXGL_PARAM_INT2"] = { type ='value', }, ["LUXGL_PARAM_INT3"] = { type ='value', }, ["LUXGL_PARAM_INT4"] = { type ='value', }, ["LUXGL_PARAM_UINT"] = { type ='value', }, ["LUXGL_PARAM_UINT2"] = { type ='value', }, ["LUXGL_PARAM_UINT3"] = { type ='value', }, ["LUXGL_PARAM_UINT4"] = { type ='value', }, ["LUXGL_PARAM_BOOL"] = { type ='value', }, ["LUXGL_PARAM_BOOL2"] = { type ='value', }, ["LUXGL_PARAM_BOOL3"] = { type ='value', }, ["LUXGL_PARAM_BOOL4"] = { type ='value', }, ["LUXGL_PARAM_MAT2"] = { type ='value', }, ["LUXGL_PARAM_MAT3"] = { type ='value', }, ["LUXGL_PARAM_MAT4"] = { type ='value', }, ["LUXGL_PARAM_MAT2x3"] = { type ='value', }, ["LUXGL_PARAM_MAT2x4"] = { type ='value', }, ["LUXGL_PARAM_MAT3x2"] = { type ='value', }, ["LUXGL_PARAM_MAT3x4"] = { type ='value', }, ["LUXGL_PARAM_MAT4x2"] = { type ='value', }, ["LUXGL_PARAM_MAT4x3"] = { type ='value', }, ["LUXGL_PARAM_SAMPLER_1D"] = { type ='value', }, ["LUXGL_PARAM_SAMPLER_2D"] = { type ='value', }, ["LUXGL_PARAM_SAMPLER_3D"] = { type ='value', }, ["LUXGL_PARAM_SAMPLER_CUBE"] = { type ='value', }, ["LUXGL_PARAM_SAMPLER_2DRECT"] = { type ='value', }, ["LUXGL_PARAM_SAMPLER_2DMS"] = { type ='value', }, ["LUXGL_PARAM_SAMPLER_1DARRAY"] = { type ='value', }, ["LUXGL_PARAM_SAMPLER_2DARRAY"] = { type ='value', }, ["LUXGL_PARAM_SAMPLER_CUBEARRAY"] = { type ='value', }, ["LUXGL_PARAM_SAMPLER_2DMSARRAY"] = { type ='value', }, ["LUXGL_PARAM_SAMPLER_BUFFER"] = { type ='value', }, ["LUXGL_PARAM_ISAMPLER_1D"] = { type ='value', }, ["LUXGL_PARAM_ISAMPLER_2D"] = { type ='value', }, ["LUXGL_PARAM_ISAMPLER_3D"] = { type ='value', }, ["LUXGL_PARAM_ISAMPLER_CUBE"] = { type ='value', }, ["LUXGL_PARAM_ISAMPLER_2DRECT"] = { type ='value', }, ["LUXGL_PARAM_ISAMPLER_2DMS"] = { type ='value', }, ["LUXGL_PARAM_ISAMPLER_1DARRAY"] = { type ='value', }, ["LUXGL_PARAM_ISAMPLER_2DARRAY"] = { type ='value', }, ["LUXGL_PARAM_ISAMPLER_CUBEARRAY"] = { type ='value', }, ["LUXGL_PARAM_ISAMPLER_2DMSARRAY"] = { type ='value', }, ["LUXGL_PARAM_ISAMPLER_BUFFER"] = { type ='value', }, ["LUXGL_PARAM_USAMPLER_1D"] = { type ='value', }, ["LUXGL_PARAM_USAMPLER_2D"] = { type ='value', }, ["LUXGL_PARAM_USAMPLER_3D"] = { type ='value', }, ["LUXGL_PARAM_USAMPLER_CUBE"] = { type ='value', }, ["LUXGL_PARAM_USAMPLER_2DRECT"] = { type ='value', }, ["LUXGL_PARAM_USAMPLER_2DMS"] = { type ='value', }, ["LUXGL_PARAM_USAMPLER_1DARRAY"] = { type ='value', }, ["LUXGL_PARAM_USAMPLER_2DARRAY"] = { type ='value', }, ["LUXGL_PARAM_USAMPLER_CUBEARRAY"] = { type ='value', }, ["LUXGL_PARAM_USAMPLER_2DMSARRAY"] = { type ='value', }, ["LUXGL_PARAM_USAMPLER_BUFFER"] = { type ='value', }, ["LUXGL_PARAM_SAMPLER_1D_SHADOW"] = { type ='value', }, ["LUXGL_PARAM_SAMPLER_2D_SHADOW"] = { type ='value', }, ["LUXGL_PARAM_SAMPLER_CUBE_SHADOW"] = { type ='value', }, ["LUXGL_PARAM_SAMPLER_2DRECT_SHADOW"] = { type ='value', }, ["LUXGL_PARAM_SAMPLER_1DARRAY_SHADOW"] = { type ='value', }, ["LUXGL_PARAM_SAMPLER_2DARRAY_SHADOW"] = { type ='value', }, ["LUXGL_PARAM_SAMPLER_CUBEARRAY_SHADOW"] = { type ='value', }, ["LUXGL_PARAM_IMAGE_1D"] = { type ='value', }, ["LUXGL_PARAM_IMAGE_2D"] = { type ='value', }, ["LUXGL_PARAM_IMAGE_3D"] = { type ='value', }, ["LUXGL_PARAM_IMAGE_CUBE"] = { type ='value', }, ["LUXGL_PARAM_IMAGE_2DRECT"] = { type ='value', }, ["LUXGL_PARAM_IMAGE_2DMS"] = { type ='value', }, ["LUXGL_PARAM_IMAGE_1DARRAY"] = { type ='value', }, ["LUXGL_PARAM_IMAGE_2DARRAY"] = { type ='value', }, ["LUXGL_PARAM_IMAGE_CUBEARRAY"] = { type ='value', }, ["LUXGL_PARAM_IMAGE_2DMSARRAY"] = { type ='value', }, ["LUXGL_PARAM_IMAGE_BUFFER"] = { type ='value', }, ["LUXGL_PARAM_IIMAGE_1D"] = { type ='value', }, ["LUXGL_PARAM_IIMAGE_2D"] = { type ='value', }, ["LUXGL_PARAM_IIMAGE_3D"] = { type ='value', }, ["LUXGL_PARAM_IIMAGE_CUBE"] = { type ='value', }, ["LUXGL_PARAM_IIMAGE_2DRECT"] = { type ='value', }, ["LUXGL_PARAM_IIMAGE_2DMS"] = { type ='value', }, ["LUXGL_PARAM_IIMAGE_1DARRAY"] = { type ='value', }, ["LUXGL_PARAM_IIMAGE_2DARRAY"] = { type ='value', }, ["LUXGL_PARAM_IIMAGE_CUBEARRAY"] = { type ='value', }, ["LUXGL_PARAM_IIMAGE_2DMSARRAY"] = { type ='value', }, ["LUXGL_PARAM_IIMAGE_BUFFER"] = { type ='value', }, ["LUXGL_PARAM_UIMAGE_1D"] = { type ='value', }, ["LUXGL_PARAM_UIMAGE_2D"] = { type ='value', }, ["LUXGL_PARAM_UIMAGE_3D"] = { type ='value', }, ["LUXGL_PARAM_UIMAGE_CUBE"] = { type ='value', }, ["LUXGL_PARAM_UIMAGE_2DRECT"] = { type ='value', }, ["LUXGL_PARAM_UIMAGE_2DMS"] = { type ='value', }, ["LUXGL_PARAM_UIMAGE_1DARRAY"] = { type ='value', }, ["LUXGL_PARAM_UIMAGE_2DARRAY"] = { type ='value', }, ["LUXGL_PARAM_UIMAGE_CUBEARRAY"] = { type ='value', }, ["LUXGL_PARAM_UIMAGE_2DMSARRAY"] = { type ='value', }, ["LUXGL_PARAM_UIMAGE_BUFFER"] = { type ='value', }, ["LUXGL_PARAM_BUFFER"] = { type ='value', }, ["LUXGFX_BUFFERMODE_DRAW"] = { type ='value', }, ["LUXGFX_BUFFERMODE_READ"] = { type ='value', }, ["LUXGFX_BUFFERMODE_COPY"] = { type ='value', }, ["LUXGFX_BUFFERMODES"] = { type ='value', }, ["LUXGFX_BUFFERUPDATE_STATIC"] = { type ='value', }, ["LUXGFX_BUFFERUPDATE_DYNAMIC"] = { type ='value', }, ["LUXGFX_BUFFERUPDATE_STREAM"] = { type ='value', }, ["LUXGFX_BUFFERUPDATES"] = { type ='value', }, ["LUXGFX_VERTEX_ATTRIB_POS"] = { type ='value', }, ["LUXGFX_VERTEX_ATTRIB_ATTR1"] = { type ='value', }, ["LUXGFX_VERTEX_ATTRIB_NORMAL"] = { type ='value', }, ["LUXGFX_VERTEX_ATTRIB_COLOR"] = { type ='value', }, ["LUXGFX_VERTEX_ATTRIB_ATTR4"] = { type ='value', }, ["LUXGFX_VERTEX_ATTRIB_ATTR5"] = { type ='value', }, ["LUXGFX_VERTEX_ATTRIB_ATTR6"] = { type ='value', }, ["LUXGFX_VERTEX_ATTRIB_ATTR7"] = { type ='value', }, ["LUXGFX_VERTEX_ATTRIB_TEXCOORD0"] = { type ='value', }, ["LUXGFX_VERTEX_ATTRIB_TEXCOORD1"] = { type ='value', }, ["LUXGFX_VERTEX_ATTRIB_TEXCOORD2"] = { type ='value', }, ["LUXGFX_VERTEX_ATTRIB_TEXCOORD3"] = { type ='value', }, ["LUXGFX_VERTEX_ATTRIB_ATTR12"] = { type ='value', }, ["LUXGFX_VERTEX_ATTRIB_ATTR13"] = { type ='value', }, ["LUXGFX_VERTEX_ATTRIB_ATTR14"] = { type ='value', }, ["LUXGFX_VERTEX_ATTRIB_ATTR15"] = { type ='value', }, ["LUXGFX_VERTEX_ATTRIBS"] = { type ='value', }, ["LUXGFX_SAMPLERFILTER_NEAREST"] = { type ='value', }, ["LUXGFX_SAMPLERFILTER_LINEAR"] = { type ='value', }, ["LUXGFX_SAMPLERFILTER_MIPMAP_NEAREST"] = { type ='value', }, ["LUXGFX_SAMPLERFILTER_MIPMAP_LINEAR"] = { type ='value', }, ["LUXGFX_SAMPLERFILTERS"] = { type ='value', }, ["LUXGFX_SAMPLERADDRESS_REPEAT"] = { type ='value', }, ["LUXGFX_SAMPLERADDRESS_MIRROR"] = { type ='value', }, ["LUXGFX_SAMPLERADDRESS_CLAMP"] = { type ='value', }, ["LUXGFX_SAMPLERADDRESS_BORDER"] = { type ='value', }, ["LUXGFX_SAMPLERADDRESSES"] = { type ='value', }, ["LUXGFX_SAMPLERATTRIB_FILTER"] = { type ='value', }, ["LUXGFX_SAMPLERATTRIB_CMP"] = { type ='value', }, ["LUXGFX_SAMPLERATTRIB_ADDRESS"] = { type ='value', }, ["LUXGFX_SAMPLERATTRIB_ANISO"] = { type ='value', }, ["LUXGFX_SAMPLERATTRIB_LOD"] = { type ='value', }, ["LUXGFX_SAMPLERATTRIB_BORDER"] = { type ='value', }, ["LUXGFX_SAMPLERATTRIB_ALL"] = { type ='value', }, ["LUXGFX_TEXTUREFLAG_AUTOMIPMAP"] = { type ='value', }, ["LUXGFX_TEXTUREFLAG_MANMIPMAP"] = { type ='value', }, ["LUXGFX_TEXTUREFLAG_COMPRESS"] = { type ='value', }, ["LUXGFX_TEXTUREFLAG_COMPRESSED"] = { type ='value', }, ["LUXGFX_TEXTUREFLAG_SAMPLESFIXED"] = { type ='value', }, ["LUXGFX_TEXTUREFLAG_HASLOD"] = { type ='value', }, ["LUXGFX_TEXTUREFLAG_HASCOMPARE"] = { type ='value', }, ["LUXGFX_TEXTURECHANNEL_RGB"] = { type ='value', }, ["LUXGFX_TEXTURECHANNEL_RGBA"] = { type ='value', }, ["LUXGFX_TEXTURECHANNEL_R"] = { type ='value', }, ["LUXGFX_TEXTURECHANNEL_RG"] = { type ='value', }, ["LUXGFX_TEXTURECHANNEL_SRGB"] = { type ='value', }, ["LUXGFX_TEXTURECHANNEL_SRGBA"] = { type ='value', }, ["LUXGFX_TEXTURECHANNEL_DEPTH"] = { type ='value', }, ["LUXGFX_TEXTURECHANNEL_DEPTHSTENCIL"] = { type ='value', }, ["LUXGFX_TEXTURECHANNEL_ALPHA"] = { type ='value', }, ["LUXGFX_TEXTURECHANNEL_INTENSITY"] = { type ='value', }, ["LUXGFX_TEXTURECHANNEL_LUMINANCE"] = { type ='value', }, ["LUXGFX_TEXTURECHANNEL_LUMINANCEALPHA"] = { type ='value', }, ["LUXGFX_TEXTURECHANNEL_CUSTOM"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_BASE"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_UNORM8"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_UNORM16"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_SNORM8"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_SNORM16"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_FLOAT16"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_FLOAT32"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_SINT8"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_UINT8"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_SINT16"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_UINT16"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_SINT32"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_UINT32"] = { type ='value', }, ["LUXGFX_TEXTUREDATAS"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_DEPTH16"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_DEPTH24"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_DEPTH32"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_DEPTH32F"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_UNORM1010102"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_UINT1010102"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_FLOAT111110"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_EXP999"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_COMPRESSED"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_COMPRESSED_DXT1"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_COMPRESSED_DXT3"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_COMPRESSED_DXT5"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_COMPRESSED_TC"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_COMPRESSED_SIGNED_TC"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_COMPRESSED_UNORM_BPTC"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_COMPRESSED_FLOAT_BPTC"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_COMPRESSED_SIGNED_FLOAT_BPTC"] = { type ='value', }, ["LUXGFX_TEXTUREDATA_CUSTOM"] = { type ='value', }, ["LUXGFX_RENDERTARGET_DRAW"] = { type ='value', }, ["LUXGFX_RENDERTARGET_READ"] = { type ='value', }, ["LUXGFX_RENDERTARGETS"] = { type ='value', }, ["LUXGFX_RENDERASSIGN_DEPTH"] = { type ='value', }, ["LUXGFX_RENDERASSIGN_STENCIL"] = { type ='value', }, ["LUXGFX_RENDERASSIGN_COLOR0"] = { type ='value', }, ["LUXGFX_RENDERASSIGNS"] = { type ='value', }, ["LUXGFX_WIND_CCW"] = { type ='value', }, ["LUXGFX_WIND_CW"] = { type ='value', }, ["LUXGFX_RFLAG_STENCILWRITE1"] = { type ='value', }, ["LUXGFX_RFLAG_STENCILWRITE2"] = { type ='value', }, ["LUXGFX_RFLAG_STENCILWRITE3"] = { type ='value', }, ["LUXGFX_RFLAG_STENCILWRITE4"] = { type ='value', }, ["LUXGFX_RFLAG_STENCILWRITE5"] = { type ='value', }, ["LUXGFX_RFLAG_STENCILWRITE6"] = { type ='value', }, ["LUXGFX_RFLAG_STENCILWRITE7"] = { type ='value', }, ["LUXGFX_RFLAG_STENCILWRITE8"] = { type ='value', }, ["LUXGFX_RFLAG_STENCILWRITE"] = { type ='value', }, ["LUXGFX_RFLAG_FRONTCULL"] = { type ='value', }, ["LUXGFX_RFLAG_DEPTHWRITE"] = { type ='value', }, ["LUXGFX_RFLAG_CCW"] = { type ='value', }, ["LUXGFX_RFLAG_CULL"] = { type ='value', }, ["LUXGFX_RFLAG_COLORWRITER"] = { type ='value', }, ["LUXGFX_RFLAG_COLORWRITEG"] = { type ='value', }, ["LUXGFX_RFLAG_COLORWRITEB"] = { type ='value', }, ["LUXGFX_RFLAG_COLORWRITEA"] = { type ='value', }, ["LUXGFX_RFLAG_COLORWRITE"] = { type ='value', }, ["LUXGFX_RFLAG_BLEND"] = { type ='value', }, ["LUXGFX_RFLAG_STENCILTEST"] = { type ='value', }, ["LUXGFX_RFLAG_LOGIC"] = { type ='value', }, ["LUXGFX_RFLAG_DEPTHTEST"] = { type ='value', }, ["LUXGFX_RFLAG_WIRE"] = { type ='value', }, ["LUXGFX_PROGRAM_NONE"] = { type ='value', }, ["LUXGFX_PROGRAM_GLSL"] = { type ='value', }, ["LUXGFX_PROGRAM_ARBNV"] = { type ='value', }, ["LUXGFX_DOMAIN_VERTEX"] = { type ='value', }, ["LUXGFX_DOMAIN_FRAGMENT"] = { type ='value', }, ["LUXGFX_DOMAIN_GEOMETRY"] = { type ='value', }, ["LUXGFX_DOMAIN_TESSCTRL"] = { type ='value', }, ["LUXGFX_DOMAIN_TESSEVAL"] = { type ='value', }, ["LUXGFX_DOMAINS"] = { type ='value', }, ["LUXGFX_CAP_POINTSPRITE"] = { type ='value', }, ["LUXGFX_CAP_STENCILWRAP"] = { type ='value', }, ["LUXGFX_CAP_BLENDSEP"] = { type ='value', }, ["LUXGFX_CAP_OCCQUERY"] = { type ='value', }, ["LUXGFX_CAP_FBO"] = { type ='value', }, ["LUXGFX_CAP_FBOMS"] = { type ='value', }, ["LUXGFX_CAP_DEPTHFLOAT"] = { type ='value', }, ["LUXGFX_CAP_VBO"] = { type ='value', }, ["LUXGFX_CAP_PBO"] = { type ='value', }, ["LUXGFX_CAP_UBO"] = { type ='value', }, ["LUXGFX_CAP_TEX3D"] = { type ='value', }, ["LUXGFX_CAP_TEXRECT"] = { type ='value', }, ["LUXGFX_CAP_TEXNP2"] = { type ='value', }, ["LUXGFX_CAP_TEXCUBEARRAY"] = { type ='value', }, ["LUXGFX_CAP_TEXS3TC"] = { type ='value', }, ["LUXGFX_CAP_TEXRGTC"] = { type ='value', }, ["LUXGFX_CAP_TEXRW"] = { type ='value', }, ["LUXGFX_CAP_BUFMAPRANGE"] = { type ='value', }, ["LUXGFX_CAP_BUFCOPY"] = { type ='value', }, ["LUXGFX_CAP_SM0"] = { type ='value', }, ["LUXGFX_CAP_SM1"] = { type ='value', }, ["LUXGFX_CAP_SM2"] = { type ='value', }, ["LUXGFX_CAP_SM2EXT"] = { type ='value', }, ["LUXGFX_CAP_SM3"] = { type ='value', }, ["LUXGFX_CAP_SM4"] = { type ='value', }, ["LUXGFX_CAP_SM5"] = { type ='value', }, ["LUXGFX_GPUVENDOR_UNKNOWN"] = { type ='value', }, ["LUXGFX_GPUVENDOR_NVIDIA"] = { type ='value', }, ["LUXGFX_GPUVENDOR_ATI"] = { type ='value', }, ["LUXGFX_GPUVENDOR_INTEL"] = { type ='value', }, ["LUXGFX_GPUDOMAIN_VERTEX"] = { type ='value', }, ["LUXGFX_GPUDOMAIN_FRAGMENT"] = { type ='value', }, ["LUXGFX_GPUDOMAIN_GEOMETRY"] = { type ='value', }, ["LUXGFX_GPUDOMAIN_TESS_EVAL"] = { type ='value', }, ["LUXGFX_GPUDOMAIN_TESS_CTRL"] = { type ='value', }, ["LUXGFX_GPUDOMAINS"] = { type ='value', }, ["LUXGFX_GPUMODE_FIXED"] = { type ='value', }, ["LUXGFX_GPUMODE_ASM"] = { type ='value', }, ["LUXGFX_GPUMODE_HL"] = { type ='value', }, ["lxgBuffer_alloc"] = { type ='function', description = "", returns = "(uint)", valuetype = nil, args = "(lxgBufferPTR buffer, uint needed, uint padsize)", }, ["lxgBuffer_bind"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgBufferPTR buffer, lxGLBufferTarget_t type)", }, ["lxgBuffer_bindIndexed"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgBufferPTR buffer, lxGLBufferTarget_t type, uint idx)", }, ["lxgBuffer_bindRanged"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgBufferPTR buffer, lxGLBufferTarget_t type, uint idx, size_t offset, size_t size)", }, ["lxgBuffer_map"] = { type ='function', description = "", returns = "(booln)", valuetype = nil, args = "(lxgBufferPTR buffer, void**ptr, lxgAccessMode_t type)", }, ["lxgBuffer_mapRange"] = { type ='function', description = "", returns = "(booln)", valuetype = nil, args = "(lxgBufferPTR buffer, void**ptr, uint from, uint length, lxgAccessMode_t type, booln manualflush, booln unsynch)", }, ["lxgBuffer_flushRange"] = { type ='function', description = "", returns = "(booln)", valuetype = nil, args = "(lxgBufferPTR buffer, uint from, uint length)", }, ["lxgBuffer_unmap"] = { type ='function', description = "", returns = "(booln)", valuetype = nil, args = "(lxgBufferPTR buffer)", }, ["lxgBuffer_copy"] = { type ='function', description = "", returns = "(booln)", valuetype = nil, args = "(lxgBufferPTR buffer, uint bufferoffset, lxgBufferPTR src, uint srcoffset, uint size)", }, ["lxgBuffer_addressNV"] = { type ='function', description = "", returns = "(GLuint64)", valuetype = nil, args = "(lxgBufferPTR buffer)", }, ["lxgBuffer_residentNV"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgBufferPTR buffer, lxgAccessMode_t mode)", }, ["lxgBuffer_unresidentNV"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgBufferPTR buffer)", }, ["lxgBuffer_deinit"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgBufferPTR buffer, lxgContextPTR ctx)", }, ["lxgBuffer_reset"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgBufferPTR buffer, void* data)", }, ["lxgBuffer_init"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgBufferPTR buffer, lxgContextPTR ctx, lxgBufferMode_t hint, lxgBufferUpdate_t update, uint size, void* data)", }, ["lxgVertexAttribs_apply"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(flags32 attribs, lxgContextPTR ctx, flags32 changed)", }, ["lxgVertexAttribs_applyFIXED"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(flags32 attribs, lxgContextPTR ctx, flags32 changed)", }, ["lxgVertexAttrib_setFloat"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgVertexAttrib_t attrib, const float* vec4)", }, ["lxgVertexAttrib_setInteger"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgVertexAttrib_t attrib, const int* vec4)", }, ["lxgVertexAttrib_setFloatFIXED"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgVertexAttrib_t attrib, const float* vec4)", }, ["lxgVertexDecl_apply"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgVertexDeclPTR decl, lxgContextPTR ctx)", }, ["lxgVertexSetup_setStreams"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgContextPTR ctx, lxgVertexDeclPTR decl, lxgStreamHostPTR hosts)", }, ["lxgVertexSetup_setStream"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgContextPTR ctx, uint idx, lxgStreamHostPTR host)", }, ["lxgVertexSetup_apply"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgContextPTR ctx)", }, ["lxgVertexSetup_applyFIXED"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgContextPTR ctx)", }, ["lxgVertexSetup_applyNV"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgContextPTR ctx)", }, ["lxgVertexSetup_applyFIXEDNV"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgContextPTR ctx)", }, ["lxgFeedback_enable"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgContextPTR ctx, lxGLPrimitiveType_t type, int numStreams)", }, ["lxgFeedback_disable"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgContextPTR ctx)", }, ["lxgFeedback_pause"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgContextPTR ctx)", }, ["lxgFeedback_resume"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgContextPTR ctx)", }, ["lxgFeedback_applyStreams"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgContextPTR ctx)", }, ["lxgFeedback_setStreams"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgContextPTR ctx, lxgStreamHostPTR hosts, int numStreams)", }, ["lxgFeedback_setStream"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgContextPTR ctx, uint idx, lxgStreamHostPTR host)", }, ["lxgTextureChannel_valid"] = { type ='function', description = "", returns = "(booln)", valuetype = nil, args = "(lxgContextPTR ctx, lxgTextureChannel_t channel)", }, ["lxgTextureTarget_valid"] = { type ='function', description = "", returns = "(booln)", valuetype = nil, args = "(lxgContextPTR ctx, lxGLTextureTarget_t type)", }, ["lxgTexture_init"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgTexturePTR tex, lxgContextPTR ctx)", }, ["lxgTexture_deinit"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgTexturePTR tex, lxgContextPTR ctx)", }, ["lxgTexture_writeData"] = { type ='function', description = "", returns = "(booln)", valuetype = nil, args = "(lxgTexturePTR tex, uint side, booln ascompressed, booln onlydepth, uint mip, enum lxScalarType_e d, void* buffer, uint buffersize)", }, ["lxgTexture_writeBuffer"] = { type ='function', description = "", returns = "(booln)", valuetype = nil, args = "(lxgTexturePTR tex, uint side, booln ascompressed, booln onlydepth, uint mip, enum lxScalarType_e d, lxgBufferPTR buffer, uint bufferoffset)", }, ["lxgTexture_getSampler"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgTexturePTR tex, lxgSamplerPTR sampler)", }, ["lxgTexture_getMipSize"] = { type ='function', description = "", returns = "(const lxVec3iPTR)", valuetype = nil, args = "(lxgTexturePTR tex, uint mipLevel)", }, ["lxgTextureUnit_setCompare"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgContextPTR ctx, uint imageunit, enum lxgCompareMode_e cmp)", }, ["lxgTextureUnit_setSampler"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgContextPTR ctx, uint imageunit, lxgSamplerPTR sampler, flags32 what)", }, ["lxgTextureUnit_checkedSampler"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgContextPTR ctx, uint imageunit, lxgSamplerPTR sampler, flags32 what)", }, ["lxgSampler_init"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgSamplerPTR self)", }, ["lxgSampler_setAddress"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgSamplerPTR self, uint n, lxgSamplerAddress_t address)", }, ["lxgSampler_setCompare"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgSamplerPTR self, enum lxgCompareMode_e cmp)", }, ["lxgSampler_changed"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgSamplerPTR self)", }, ["lxgSampler_initHW"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgSamplerPTR self, lxgContextPTR ctx)", }, ["lxgSampler_deinitHW"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgSamplerPTR self, lxgContextPTR ctx)", }, ["lxgSampler_updateHW"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgSamplerPTR self, lxgContextPTR ctx)", }, ["lxgRenderBuffer_deinit"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgRenderBufferPTR rb, lxgContextPTR ctx)", }, ["lxgRenderTarget_init"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgRenderTargetPTR rt, lxgContextPTR ctx)", }, ["lxgRenderTarget_deinit"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgRenderTargetPTR rt, lxgContextPTR ctx)", }, ["lxgRenderTarget_applyAssigns"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgRenderTargetPTR rt, lxgRenderTargetType_t mode)", }, ["lxgRenderTarget_applyBlit"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgRenderTargetPTR to, lxgContextPTR ctx, lxgRenderTargetPTR from, lxgRenderTargetBlitPTR update, flags32 mask, booln linearFilter)", }, ["lxgRenderTarget_setAssign"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgRenderTargetPTR rt, uint assigntype, lxgRenderAssignPTR assign)", }, ["lxgRenderTarget_checkSize"] = { type ='function', description = "", returns = "(booln)", valuetype = nil, args = "(lxgRenderTargetPTR rt)", }, ["lxgRenderTarget_getBounds"] = { type ='function', description = "", returns = "(const lxgFrameBoundsPTR)", valuetype = "lxg.lxgFrameBounds_t", args = "(lxgRenderTargetPTR rt)", }, ["lxgViewPortRect_apply"] = { type ='function', description = "", returns = "(booln)", valuetype = nil, args = "(lxRectangleiPTR rect, lxgContextPTR ctx)", }, ["lxgViewPortScissor_applyState"] = { type ='function', description = "", returns = "(booln)", valuetype = nil, args = "(booln state, lxgContextPTR ctx)", }, ["lxgViewPort_apply"] = { type ='function', description = "", returns = "(booln)", valuetype = nil, args = "(lxgViewPortPTR obj, lxgContextPTR ctx)", }, ["lxgViewPort_sync"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgViewPortPTR obj, lxgContextPTR ctx)", }, ["lxgViewPortMrt_apply"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgViewPortMrtPTR obj, lxgContextPTR ctx)", }, ["lxgViewPortMrt_sync"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgViewPortMrtPTR obj, lxgContextPTR ctx)", }, ["lxgDepth_init"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgDepthPTR obj)", }, ["lxgDepth_apply"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgDepthPTR obj, lxgContextPTR ctx)", }, ["lxgDepth_sync"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgDepthPTR obj, lxgContextPTR ctx)", }, ["lxgLogic_init"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgLogicPTR obj)", }, ["lxgLogic_apply"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgLogicPTR obj, lxgContextPTR ctx)", }, ["lxgLogic_sync"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgLogicPTR obj, lxgContextPTR ctx)", }, ["lxgStencil_init"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgStencilPTR obj)", }, ["lxgStencil_apply"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgStencilPTR obj, lxgContextPTR ctx)", }, ["lxgStencil_sync"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgStencilPTR obj, lxgContextPTR ctx)", }, ["lxgBlend_init"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgBlendPTR obj)", }, ["lxgBlend_apply"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgBlendPTR obj, lxgContextPTR ctx)", }, ["lxgBlend_sync"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgBlendPTR obj, lxgContextPTR ctx)", }, ["lxgBlendMrt_apply"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgBlendMrtPTR obj, lxgContextPTR ctx)", }, ["lxgBlendMrt_sync"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgBlendMrtPTR obj, lxgContextPTR ctx)", }, ["lxgRenderFlag_init"] = { type ='function', description = "", returns = "(flags32)", valuetype = nil, args = "()", }, ["lxgRenderFlag_sync"] = { type ='function', description = "", returns = "(flags32)", valuetype = nil, args = "(lxgContextPTR ctx)", }, ["lxgRenderFlag_apply"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(flags32 flags, lxgContextPTR ctx, flags32 changed)", }, ["lxgRenderFlag_test"] = { type ='function', description = "", returns = "(const char*)", valuetype = "string", args = "(lxgContextPTR ctx)", }, ["lxgRasterizer_sync"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgRasterizerPTR raster, lxgContextPTR ctx)", }, ["lxgProgramParameter_initFunc"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgProgramParameterPTR param)", }, ["lxgDomainProgram_init"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgDomainProgramPTR stage, lxgContextPTR ctx, lxgProgramDomain_t type)", }, ["lxgDomainProgram_deinit"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgDomainProgramPTR stage, lxgContextPTR ctx)", }, ["lxgDomainProgram_compile"] = { type ='function', description = "", returns = "(booln)", valuetype = nil, args = "(lxgDomainProgramPTR stage, const char *src, int len)", }, ["lxgDomainProgram_error"] = { type ='function', description = "", returns = "(const char*)", valuetype = "string", args = "(lxgDomainProgramPTR stage, char *buffer, int len)", }, ["lxgProgram_init"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgProgramPTR prog, lxgContextPTR ctx)", }, ["lxgProgram_deinit"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgProgramPTR prog, lxgContextPTR ctx)", }, ["lxgProgram_setDomain"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgProgramPTR prog, lxgProgramDomain_t type, lxgDomainProgramPTR stage)", }, ["lxgProgram_link"] = { type ='function', description = "", returns = "(booln)", valuetype = nil, args = "(lxgProgramPTR prog)", }, ["lxgProgram_log"] = { type ='function', description = "", returns = "(const char*)", valuetype = "string", args = "(lxgProgramPTR prog, char* buffer, int len)", }, ["lxgProgram_applyParameters"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgProgramPTR prog, lxgContextPTR ctx, uint num, lxgProgramParameterPTR *params, void **data)", }, ["lxgProgram_applySamplers"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgProgramPTR prog, lxgContextPTR ctx, uint num, lxgProgramParameterPTR *params, lxgTexturePTR *data)", }, ["lxgProgram_applyBuffers"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgProgramPTR prog, lxgContextPTR ctx, uint num, lxgProgramParameterPTR *params, lxgBufferPTR *data)", }, ["lxgProgram_applyImages"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgProgramPTR prog, lxgContextPTR ctx, uint num, lxgProgramParameterPTR *params, lxgTextureImagePTR *data)", }, ["lxgProgramParameter_initDomainNV"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgProgramParameterPTR param, lxgProgramDomain_t domain)", }, ["lxgProgramParameter_initFuncNV"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgProgramParameterPTR param)", }, ["lxgDomainProgram_initNV"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgDomainProgramPTR stage, lxgContextPTR ctx, lxgProgramDomain_t type)", }, ["lxgDomainProgram_deinitNV"] = { type ='function', description = "", returns = "()", valuetype = nil, args = "(lxgDomainProgramPTR stage, lxgContextPTR ctx)", }, ["lxgDomainProgram_compileNV"] = { type ='function', description = "", returns = "(booln)", valuetype = nil, args = "(lxgDomainProgramPTR stage, const char *src, int len)", }, ["lxgDomainProgram_errorNV"] = { type ='function', description = "", returns = "(const char*)", valuetype = "string", args = "(lxgDomainProgramPTR stage, char *buffer, int len)", }, ["lxgProgram_initNV"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgProgramPTR prog, lxgContextPTR ctx)", }, ["lxgProgram_deinitNV"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgProgramPTR prog, lxgContextPTR ctx)", }, ["lxgProgram_setDomainNV"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgProgramPTR prog, lxgProgramDomain_t type, lxgDomainProgramPTR stage)", }, ["lxgContext_init"] = { type ='function', description = "", returns = "(const char*)", valuetype = "string", args = "(lxgContextPTR ctx)", }, ["lxgContext_syncStates"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgContextPTR ctx)", }, ["lxgContext_checkStates"] = { type ='function', description = "", returns = "(booln)", valuetype = nil, args = "(lxgContextPTR ctx)", }, ["lxgContext_resetTextures"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgContextPTR ctx)", }, ["lxgContext_resetVertexStreams"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgContextPTR ctx)", }, ["lxgTexture_apply"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgTexturePTR obj, lxgContextPTR ctx, uint imageunit)", }, ["lxgSampler_apply"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgSamplerPTR obj, lxgContextPTR ctx, uint imageunit)", }, ["lxgTextures_apply"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgTexturePTR *texs, lxgContextPTR ctx, uint start, uint num)", }, ["lxgSamplers_apply"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgSamplerPTR *samps, lxgContextPTR ctx, uint start, uint num)", }, ["lxgTextureImage_apply"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgTextureImagePTR obj, lxgContextPTR ctx, uint imageunit)", }, ["lxgRenderTarget_apply"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgRenderTargetPTR obj, lxgContextPTR ctx, lxgRenderTargetType_t type)", }, ["lxgRenderTarget_applyDraw"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgRenderTargetPTR obj, lxgContextPTR ctx, booln setViewport)", }, ["lxgProgram_apply"] = { type ='function', description = "", returns = "(void)", valuetype = nil, args = "(lxgProgramPTR obj, lxgContextPTR ctx)", }, ["lxgBuffer_t"] = { type ='class', description = "", childs = { ["gltarget"] = { type ='value', description = "lxGLBufferTarget_t", valuetype = nil, }, ["glid"] = { type ='value', description = "GLuint", valuetype = nil, }, ["address"] = { type ='value', description = "GLuint64", valuetype = nil, }, ["ctx"] = { type ='value', description = "lxgContextPTR", valuetype = "lxg.lxgContext_t", }, ["user"] = { type ='value', description = "void*", valuetype = nil, }, ["mapped"] = { type ='value', description = "void*", valuetype = nil, }, ["maptype"] = { type ='value', description = "lxgAccessMode_t", valuetype = nil, }, ["mapstart"] = { type ='value', description = "uint", valuetype = nil, }, ["maplength"] = { type ='value', description = "uint", valuetype = nil, }, ["size"] = { type ='value', description = "uint", valuetype = nil, }, ["used"] = { type ='value', description = "uint", valuetype = nil, }, ["mode"] = { type ='value', description = "lxgBufferMode_t", valuetype = nil, }, ["update"] = { type ='value', description = "lxgBufferUpdate_t", valuetype = nil, }, } }, ["lxgVertexElement_t"] = { type ='class', description = "", childs = { ["normalize"] = { type ='value', description = "unsigned:1", valuetype = nil, }, ["integer"] = { type ='value', description = "unsigned:1", valuetype = nil, }, ["cnt"] = { type ='value', description = "unsigned:2", valuetype = nil, }, ["stream"] = { type ='value', description = "unsigned:4", valuetype = nil, }, ["scalartype"] = { type ='value', description = "unsigned:8", valuetype = nil, }, ["stridehalf"] = { type ='value', description = "unsigned:8", valuetype = nil, }, ["offset"] = { type ='value', description = "unsigned:8", valuetype = nil, }, } }, ["lxgVertexDecl_t"] = { type ='class', description = "", childs = { ["available"] = { type ='value', description = "flags32", valuetype = nil, }, ["streams"] = { type ='value', description = "uint", valuetype = nil, }, ["table"] = { type ='value', description = "lxgVertexElement_t[LUXGFX_VERTEX_ATTRIBS]", valuetype = "lxg.lxgVertexElement_t", }, } }, ["lxgStreamHost_t"] = { type ='class', description = "", childs = { ["buffer"] = { type ='value', description = "lxgBufferPTR", valuetype = "lxg.lxgBuffer_t", }, ["ptr"] = { type ='value', description = "void*", valuetype = nil, }, ["len"] = { type ='value', description = "size_t", valuetype = nil, }, } }, ["lxgVertexPointer_t"] = { type ='class', description = "", childs = { ["element"] = { type ='value', description = "lxgVertexElement_t[LUXGFX_VERTEX_ATTRIBS]", valuetype = "lxg.lxgVertexElement_t", }, ["streams"] = { type ='value', description = "lxgStreamHost_t[LUXGFX_MAX_VERTEX_STREAMS]", valuetype = "lxg.lxgStreamHost_t", }, } }, ["lxgVertexState_t"] = { type ='class', description = "", childs = { ["decl"] = { type ='value', description = "lxgVertexDeclPTR", valuetype = "lxg.lxgVertexDecl_t", }, ["active"] = { type ='value', description = "flags32", valuetype = nil, }, ["declvalid"] = { type ='value', description = "flags32", valuetype = nil, }, ["streamvalid"] = { type ='value', description = "flags32", valuetype = nil, }, ["declchange"] = { type ='value', description = "flags32", valuetype = nil, }, ["streamchange"] = { type ='value', description = "flags32", valuetype = nil, }, ["setup"] = { type ='value', description = "lxgVertexPointer_t", valuetype = "lxg.lxgVertexPointer_t", }, } }, ["lxgFeedbackState_t"] = { type ='class', description = "", childs = { ["capture"] = { type ='value', description = "lxGLPrimitiveType_t", valuetype = nil, }, ["active"] = { type ='value', description = "int", valuetype = nil, }, ["usedvalid"] = { type ='value', description = "flags32", valuetype = nil, }, ["streamvalid"] = { type ='value', description = "flags32", valuetype = nil, }, ["streamchange"] = { type ='value', description = "flags32", valuetype = nil, }, ["streams"] = { type ='value', description = "lxgStreamHost_t[LUXGFX_MAX_VERTEX_STREAMS]", valuetype = "lxg.lxgStreamHost_t", }, } }, ["lxgSamplerLod_t"] = { type ='class', description = "", childs = { ["bias"] = { type ='value', description = "float", valuetype = nil, }, ["min"] = { type ='value', description = "float", valuetype = nil, }, ["max"] = { type ='value', description = "float", valuetype = nil, }, } }, ["lxgSampler_t"] = { type ='class', description = "", childs = { ["glid"] = { type ='value', description = "GLuint", valuetype = nil, }, ["incarnation"] = { type ='value', description = "uint32", valuetype = nil, }, ["cmpfunc"] = { type ='value', description = "lxGLCompareMode_t", valuetype = nil, }, ["filter"] = { type ='value', description = "lxgSamplerFilter_t", valuetype = nil, }, ["addru"] = { type ='value', description = "lxgSamplerAddress_t", valuetype = nil, }, ["addrv"] = { type ='value', description = "lxgSamplerAddress_t", valuetype = nil, }, ["addrw"] = { type ='value', description = "lxgSamplerAddress_t", valuetype = nil, }, ["aniso"] = { type ='value', description = "uint", valuetype = nil, }, ["lod"] = { type ='value', description = "lxgSamplerLod_t", valuetype = "lxg.lxgSamplerLod_t", }, ["border"] = { type ='value', description = "float[4]", valuetype = nil, }, } }, ["lxgTexture_t"] = { type ='class', description = "", childs = { ["gltarget"] = { type ='value', description = "lxGLTextureTarget_t", valuetype = nil, }, ["glid"] = { type ='value', description = "GLuint", valuetype = nil, }, ["lastSampler"] = { type ='value', description = "lxgSamplerPTR", valuetype = "lxg.lxgSampler_t", }, ["lastSamplerIncarnation"] = { type ='value', description = "uint32", valuetype = nil, }, ["ctx"] = { type ='value', description = "lxgContextPTR", valuetype = "lxg.lxgContext_t", }, ["formattype"] = { type ='value', description = "lxgTextureChannel_t", valuetype = nil, }, ["datatype"] = { type ='value', description = "lxgTextureDataType_t", valuetype = nil, }, ["flags"] = { type ='value', description = "flags32", valuetype = nil, }, ["width"] = { type ='value', description = "int", valuetype = nil, }, ["height"] = { type ='value', description = "int", valuetype = nil, }, ["depth"] = { type ='value', description = "int", valuetype = nil, }, ["arraysize"] = { type ='value', description = "int", valuetype = nil, }, ["samples"] = { type ='value', description = "int", valuetype = nil, }, ["mipsdefined"] = { type ='value', description = "flags32", valuetype = nil, }, ["miplevels"] = { type ='value', description = "uint", valuetype = nil, }, ["mipsizes"] = { type ='value', description = "lxVec3i_t[LUXGFX_MAX_TEXTURE_MIPMAPS]", valuetype = nil, }, ["pixelsizes"] = { type ='value', description = "uint[LUXGFX_MAX_TEXTURE_MIPMAPS]", valuetype = nil, }, ["nativesizes"] = { type ='value', description = "size_t[LUXGFX_MAX_TEXTURE_MIPMAPS]", valuetype = nil, }, ["components"] = { type ='value', description = "uint", valuetype = nil, }, ["componentsize"] = { type ='value', description = "uint", valuetype = nil, }, ["sampler"] = { type ='value', description = "lxgSampler_t", valuetype = "lxg.lxgSampler_t", }, ["glinternalformat"] = { type ='value', description = "GLenum", valuetype = nil, }, ["gldatatype"] = { type ='value', description = "GLenum", valuetype = nil, }, ["gldataformat"] = { type ='value', description = "GLenum", valuetype = nil, }, } }, ["lxgRenderBuffer_t"] = { type ='class', description = "", childs = { ["glid"] = { type ='value', description = "GLuint", valuetype = nil, }, ["ctx"] = { type ='value', description = "lxgContextPTR", valuetype = "lxg.lxgContext_t", }, ["formattype"] = { type ='value', description = "lxgTextureChannel_t", valuetype = nil, }, ["width"] = { type ='value', description = "int", valuetype = nil, }, ["height"] = { type ='value', description = "int", valuetype = nil, }, ["samples"] = { type ='value', description = "uint", valuetype = nil, }, } }, ["lxgTextureUpdate_t"] = { type ='class', description = "", childs = { ["from"] = { type ='value', description = "lxVec3i_t", valuetype = nil, }, ["to"] = { type ='value', description = "lxVec3i_t", valuetype = nil, }, ["size"] = { type ='value', description = "lxVec3i_t", valuetype = nil, }, } }, ["lxgTextureImage_t"] = { type ='class', description = "", childs = { ["tex"] = { type ='value', description = "lxgTexturePTR", valuetype = "lxg.lxgTexture_t", }, ["level"] = { type ='value', description = "int", valuetype = nil, }, ["layered"] = { type ='value', description = "booln", valuetype = nil, }, ["layer"] = { type ='value', description = "int", valuetype = nil, }, ["glformat"] = { type ='value', description = "GLenum", valuetype = nil, }, ["glaccess"] = { type ='value', description = "GLenum", valuetype = nil, }, } }, ["lxgFrameBounds_t"] = { type ='class', description = "", childs = { ["width"] = { type ='value', description = "int", valuetype = nil, }, ["height"] = { type ='value', description = "int", valuetype = nil, }, } }, ["lxgViewDepth_t"] = { type ='class', description = "", childs = { ["near"] = { type ='value', description = "double", valuetype = nil, }, ["far"] = { type ='value', description = "double", valuetype = nil, }, } }, ["lxgViewPort_t"] = { type ='class', description = "", childs = { ["scissor"] = { type ='value', description = "booln", valuetype = nil, }, ["scissorRect"] = { type ='value', description = "lxRectanglei_t", valuetype = nil, }, ["viewRect"] = { type ='value', description = "lxRectanglei_t", valuetype = nil, }, ["depth"] = { type ='value', description = "lxgViewDepth_t", valuetype = "lxg.lxgViewDepth_t", }, } }, ["lxgViewPortMrt_t"] = { type ='class', description = "", childs = { ["numused"] = { type ='value', description = "uint", valuetype = nil, }, ["scissored"] = { type ='value', description = "flags32", valuetype = nil, }, ["bounds"] = { type ='value', description = "lxRectanglef_t[LUXGFX_MAX_RENDERTARGETS]", valuetype = nil, }, ["scissors"] = { type ='value', description = "lxRectanglei_t[LUXGFX_MAX_RENDERTARGETS]", valuetype = nil, }, ["depths"] = { type ='value', description = "lxgViewDepth_t[LUXGFX_MAX_RENDERTARGETS]", valuetype = "lxg.lxgViewDepth_t", }, } }, ["lxgRenderAssign_t"] = { type ='class', description = "", childs = { ["tex"] = { type ='value', description = "lxgTexturePTR", valuetype = "lxg.lxgTexture_t", }, ["rbuf"] = { type ='value', description = "lxgRenderBufferPTR", valuetype = "lxg.lxgRenderBuffer_t", }, ["mip"] = { type ='value', description = "uint", valuetype = nil, }, ["layer"] = { type ='value', description = "uint", valuetype = nil, }, } }, ["lxgRenderTarget_t"] = { type ='class', description = "", childs = { ["glid"] = { type ='value', description = "GLuint", valuetype = nil, }, ["ctx"] = { type ='value', description = "lxgContextPTR", valuetype = "lxg.lxgContext_t", }, ["maxidx"] = { type ='value', description = "uint", valuetype = nil, }, ["dirty"] = { type ='value', description = "flags32", valuetype = nil, }, ["assigns"] = { type ='value', description = "lxgRenderAssign_t[LUXGFX_RENDERASSIGNS]", valuetype = "lxg.lxgRenderAssign_t", }, ["equalsized"] = { type ='value', description = "booln", valuetype = nil, }, ["bounds"] = { type ='value', description = "lxgFrameBounds_t", valuetype = "lxg.lxgFrameBounds_t", }, } }, ["lxgRenderTargetBlit_t"] = { type ='class', description = "", childs = { ["fromStart"] = { type ='value', description = "lxVec2i_t", valuetype = nil, }, ["fromEnd"] = { type ='value', description = "lxVec2i_t", valuetype = nil, }, ["toStart"] = { type ='value', description = "lxVec2i_t", valuetype = nil, }, ["toEnd"] = { type ='value', description = "lxVec2i_t", valuetype = nil, }, } }, ["lxgRasterizer_t"] = { type ='class', description = "", childs = { ["wind"] = { type ='value', description = "lxgWinding_t", valuetype = nil, }, ["multisample"] = { type ='value', description = "booln", valuetype = nil, }, ["fill"] = { type ='value', description = "booln", valuetype = nil, }, ["depthclamp"] = { type ='value', description = "booln", valuetype = nil, }, ["polyoffset"] = { type ='value', description = "float", valuetype = nil, }, ["polyoffsetslope"] = { type ='value', description = "float", valuetype = nil, }, } }, ["lxgAlpha_t"] = { type ='class', description = "", childs = { ["func"] = { type ='value', description = "lxGLCompareMode_t", valuetype = nil, }, ["refval"] = { type ='value', description = "float", valuetype = nil, }, } }, ["lxgDepth_t"] = { type ='class', description = "", childs = { ["func"] = { type ='value', description = "lxGLCompareMode_t", valuetype = nil, }, ["clip"] = { type ='value', description = "booln", valuetype = nil, }, } }, ["lxgLogic_t"] = { type ='class', description = "", childs = { ["op"] = { type ='value', description = "lxGLLogicOp_t", valuetype = nil, }, } }, ["lxgStencilOp_t"] = { type ='class', description = "", childs = { ["fail"] = { type ='value', description = "lxGLStencilMode_t", valuetype = nil, }, ["zfail"] = { type ='value', description = "lxGLStencilMode_t", valuetype = nil, }, ["zpass"] = { type ='value', description = "lxGLStencilMode_t", valuetype = nil, }, ["func"] = { type ='value', description = "lxGLCompareMode_t", valuetype = nil, }, } }, ["lxgStencil_t"] = { type ='class', description = "", childs = { ["refvalue"] = { type ='value', description = "uint16", valuetype = nil, }, ["mask"] = { type ='value', description = "uint16", valuetype = nil, }, ["ops"] = { type ='value', description = "lxgStencilOp_t[2]", valuetype = "lxg.lxgStencilOp_t", }, } }, ["lxgBlendMode_t"] = { type ='class', description = "", childs = { ["srcw"] = { type ='value', description = "lxGLBlendWeight_t", valuetype = nil, }, ["dstw"] = { type ='value', description = "lxGLBlendWeight_t", valuetype = nil, }, ["equ"] = { type ='value', description = "lxGLBlendEquation_t", valuetype = nil, }, } }, ["lxgBlend_t"] = { type ='class', description = "", childs = { ["colormode"] = { type ='value', description = "lxgBlendMode_t", valuetype = "lxg.lxgBlendMode_t", }, ["alphamode"] = { type ='value', description = "lxgBlendMode_t", valuetype = "lxg.lxgBlendMode_t", }, } }, ["lxgBlendMrt_t"] = { type ='class', description = "", childs = { ["individual"] = { type ='value', description = "uint16", valuetype = nil, }, ["numused"] = { type ='value', description = "uint16", valuetype = nil, }, ["enabled"] = { type ='value', description = "flags32", valuetype = nil, }, ["blends"] = { type ='value', description = "lxgBlend_t[LUXGFX_MAX_RENDERTARGETS]", valuetype = "lxg.lxgBlend_t", }, } }, ["lxgProgramParameter_t"] = { type ='class', description = "", childs = { ["gltype"] = { type ='value', description = "lxGLParameterType_t", valuetype = nil, }, ["gllocation"] = { type ='value', description = "GLuint", valuetype = nil, }, ["func"] = { type ='value', description = "lxgParmeterUpdate_fn", valuetype = nil, }, ["count"] = { type ='value', description = "ushort", valuetype = nil, }, ["transpose"] = { type ='value', description = "bool16", valuetype = nil, }, ["size"] = { type ='value', description = "uint", valuetype = nil, }, ["name"] = { type ='value', description = "const char*", valuetype = "string", }, } }, ["lxgProgramData_t"] = { type ='class', description = "", childs = { ["numParams"] = { type ='value', description = "uint", valuetype = nil, }, ["parameters"] = { type ='value', description = "lxgProgramParameterPTR", valuetype = "lxg.lxgProgramParameter_t", }, ["numSampler"] = { type ='value', description = "uint", valuetype = nil, }, ["samplers"] = { type ='value', description = "lxgProgramParameterPTR", valuetype = "lxg.lxgProgramParameter_t", }, ["numBuffers"] = { type ='value', description = "uint", valuetype = nil, }, ["buffer"] = { type ='value', description = "lxgProgramParameterPTR", valuetype = "lxg.lxgProgramParameter_t", }, ["numImages"] = { type ='value', description = "uint", valuetype = nil, }, ["images"] = { type ='value', description = "lxgProgramParameterPTR", valuetype = "lxg.lxgProgramParameter_t", }, } }, ["lxgDomainProgram_t"] = { type ='class', description = "", childs = { ["glid"] = { type ='value', description = "GLuint", valuetype = nil, }, ["data"] = { type ='value', description = "lxgProgramDataPTR", valuetype = "lxg.lxgProgramData_t", }, ["ctx"] = { type ='value', description = "lxgContextPTR", valuetype = "lxg.lxgContext_t", }, ["progtype"] = { type ='value', description = "lxgProgramType_t", valuetype = nil, }, } }, ["lxgProgram_t"] = { type ='class', description = "", childs = { ["glid"] = { type ='value', description = "GLuint", valuetype = nil, }, ["type"] = { type ='value', description = "lxgProgramType_t", valuetype = nil, }, ["usedProgs"] = { type ='value', description = "flags32", valuetype = nil, }, ["programs"] = { type ='value', description = "lxgDomainProgramPTR[LUXGFX_DOMAINS]", valuetype = "lxg.lxgDomainProgram_t", }, ["data"] = { type ='value', description = "lxgProgramDataPTR", valuetype = "lxg.lxgProgramData_t", }, ["ctx"] = { type ='value', description = "lxgContextPTR", valuetype = "lxg.lxgContext_t", }, } }, ["lxgCapabilites_t"] = { type ='class', description = "", childs = { ["texsize"] = { type ='value', description = "int", valuetype = nil, }, ["texsize3d"] = { type ='value', description = "int", valuetype = nil, }, ["texlayers"] = { type ='value', description = "int", valuetype = nil, }, ["texunits"] = { type ='value', description = "int", valuetype = nil, }, ["teximages"] = { type ='value', description = "int", valuetype = nil, }, ["texcoords"] = { type ='value', description = "int", valuetype = nil, }, ["texvtxunits"] = { type ='value', description = "int", valuetype = nil, }, ["texaniso"] = { type ='value', description = "float", valuetype = nil, }, ["pointsize"] = { type ='value', description = "float", valuetype = nil, }, ["drawbuffers"] = { type ='value', description = "int", valuetype = nil, }, ["viewports"] = { type ='value', description = "int", valuetype = nil, }, ["fbosamples"] = { type ='value', description = "int", valuetype = nil, }, } }, ["lxgContext_t"] = { type ='class', description = "", childs = { ["capbits"] = { type ='value', description = "flags32", valuetype = nil, }, ["program"] = { type ='value', description = "lxgProgramPTR", valuetype = "lxg.lxgProgram_t", }, ["vertex"] = { type ='value', description = "lxgVertexState_t", valuetype = "lxg.lxgVertexState_t", }, ["textures"] = { type ='value', description = "lxgTexturePTR[LUXGFX_MAX_TEXTURE_IMAGES]", valuetype = "lxg.lxgTexture_t", }, ["samplers"] = { type ='value', description = "lxgSamplerPTR[LUXGFX_MAX_TEXTURE_IMAGES]", valuetype = "lxg.lxgSampler_t", }, ["rendertargets"] = { type ='value', description = "lxgRenderTargetPTR[LUXGFX_RENDERTARGETS]", valuetype = "lxg.lxgRenderTarget_t", }, ["images"] = { type ='value', description = "lxgTextureImagePTR[LUXGFX_MAX_RWTEXTURE_IMAGES]", valuetype = "lxg.lxgTextureImage_t", }, ["uniform"] = { type ='value', description = "lxgBufferPTR[LUXGFX_MAX_UNIFORM_BUFFERS]", valuetype = "lxg.lxgBuffer_t", }, ["feedback"] = { type ='value', description = "lxgFeedbackState_t", valuetype = "lxg.lxgFeedbackState_t", }, ["rflag"] = { type ='value', description = "flags32", valuetype = nil, }, ["blend"] = { type ='value', description = "lxgBlend_t", valuetype = "lxg.lxgBlend_t", }, ["depth"] = { type ='value', description = "lxgDepth_t", valuetype = "lxg.lxgDepth_t", }, ["stencil"] = { type ='value', description = "lxgStencil_t", valuetype = "lxg.lxgStencil_t", }, ["logic"] = { type ='value', description = "lxgLogic_t", valuetype = "lxg.lxgLogic_t", }, ["viewport"] = { type ='value', description = "lxgViewPort_t", valuetype = "lxg.lxgViewPort_t", }, ["framebounds"] = { type ='value', description = "lxgFrameBounds_t", valuetype = "lxg.lxgFrameBounds_t", }, ["window"] = { type ='value', description = "lxgFrameBounds_t", valuetype = "lxg.lxgFrameBounds_t", }, ["blendMRT"] = { type ='value', description = "lxgBlendMrt_t", valuetype = "lxg.lxgBlendMrt_t", }, ["viewportMRT"] = { type ='value', description = "lxgViewPortMrt_t", valuetype = "lxg.lxgViewPortMrt_t", }, ["capabilites"] = { type ='value', description = "lxgCapabilites_t", valuetype = "lxg.lxgCapabilites_t", }, } }, } return { lxg = { type = 'lib', description = "Lux Graphics", childs = api, }, }