Revert "merge new-UI"

This reverts commit d23aef83b8.
pull/2/head
ink-soul 2023-06-07 16:21:41 +08:00
parent d23aef83b8
commit 36d07026a6
2445 changed files with 72039 additions and 370616 deletions

View File

@ -31,18 +31,7 @@
"cmakeCommandArgs": "",
"buildCommandArgs": "",
"ctestCommandArgs": "",
"inheritEnvironments": [ "clang_cl_x64_x64" ]
},
{
"name": "x64-Release",
"generator": "Ninja",
"configurationType": "RelWithDebInfo",
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "",
"ctestCommandArgs": "",
"inheritEnvironments": [ "msvc_x64_x64" ],
"inheritEnvironments": [ "clang_cl_x64_x64" ],
"variables": []
}
]

View File

@ -0,0 +1,327 @@
/*
* Android Vulkan function pointer loader
*
* Copyright (C) 2016 by Sascha Willems - www.saschawillems.de
*
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
*/
#include "VulkanAndroid.h"
#if defined(__ANDROID__)
#include <android/log.h>
#include <dlfcn.h>
#include <android/native_window_jni.h>
android_app* androidApp;
PFN_vkCreateInstance vkCreateInstance;
PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr;
PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr;
PFN_vkCreateDevice vkCreateDevice;
PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices;
PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties;
PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2;
PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties;
PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties;
PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties;
PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures;
PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2;
PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties;
PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties;
PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties;
PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties;
PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier;
PFN_vkCreateShaderModule vkCreateShaderModule;
PFN_vkCreateBuffer vkCreateBuffer;
PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements;
PFN_vkMapMemory vkMapMemory;
PFN_vkUnmapMemory vkUnmapMemory;
PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges;
PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges;
PFN_vkBindBufferMemory vkBindBufferMemory;
PFN_vkDestroyBuffer vkDestroyBuffer;
PFN_vkAllocateMemory vkAllocateMemory;
PFN_vkBindImageMemory vkBindImageMemory;
PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout;
PFN_vkCmdCopyBuffer vkCmdCopyBuffer;
PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage;
PFN_vkCmdCopyImage vkCmdCopyImage;
PFN_vkCmdBlitImage vkCmdBlitImage;
PFN_vkCmdClearAttachments vkCmdClearAttachments;
PFN_vkCreateSampler vkCreateSampler;
PFN_vkDestroySampler vkDestroySampler;
PFN_vkDestroyImage vkDestroyImage;
PFN_vkFreeMemory vkFreeMemory;
PFN_vkCreateRenderPass vkCreateRenderPass;
PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass;
PFN_vkCmdEndRenderPass vkCmdEndRenderPass;
PFN_vkCmdNextSubpass vkCmdNextSubpass;
PFN_vkCmdExecuteCommands vkCmdExecuteCommands;
PFN_vkCmdClearColorImage vkCmdClearColorImage;
PFN_vkCreateImage vkCreateImage;
PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements;
PFN_vkCreateImageView vkCreateImageView;
PFN_vkDestroyImageView vkDestroyImageView;
PFN_vkCreateSemaphore vkCreateSemaphore;
PFN_vkDestroySemaphore vkDestroySemaphore;
PFN_vkCreateFence vkCreateFence;
PFN_vkDestroyFence vkDestroyFence;
PFN_vkWaitForFences vkWaitForFences;
PFN_vkResetFences vkResetFences;
PFN_vkResetDescriptorPool vkResetDescriptorPool;
PFN_vkCreateCommandPool vkCreateCommandPool;
PFN_vkDestroyCommandPool vkDestroyCommandPool;
PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers;
PFN_vkBeginCommandBuffer vkBeginCommandBuffer;
PFN_vkEndCommandBuffer vkEndCommandBuffer;
PFN_vkGetDeviceQueue vkGetDeviceQueue;
PFN_vkQueueSubmit vkQueueSubmit;
PFN_vkQueueWaitIdle vkQueueWaitIdle;
PFN_vkDeviceWaitIdle vkDeviceWaitIdle;
PFN_vkCreateFramebuffer vkCreateFramebuffer;
PFN_vkCreatePipelineCache vkCreatePipelineCache;
PFN_vkCreatePipelineLayout vkCreatePipelineLayout;
PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines;
PFN_vkCreateComputePipelines vkCreateComputePipelines;
PFN_vkCreateDescriptorPool vkCreateDescriptorPool;
PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout;
PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets;
PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets;
PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets;
PFN_vkCmdBindPipeline vkCmdBindPipeline;
PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers;
PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer;
PFN_vkCmdSetViewport vkCmdSetViewport;
PFN_vkCmdSetScissor vkCmdSetScissor;
PFN_vkCmdSetLineWidth vkCmdSetLineWidth;
PFN_vkCmdSetDepthBias vkCmdSetDepthBias;
PFN_vkCmdPushConstants vkCmdPushConstants;
PFN_vkCmdDrawIndexed vkCmdDrawIndexed;
PFN_vkCmdDraw vkCmdDraw;
PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect;
PFN_vkCmdDrawIndirect vkCmdDrawIndirect;
PFN_vkCmdDispatch vkCmdDispatch;
PFN_vkDestroyPipeline vkDestroyPipeline;
PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout;
PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout;
PFN_vkDestroyDevice vkDestroyDevice;
PFN_vkDestroyInstance vkDestroyInstance;
PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool;
PFN_vkFreeCommandBuffers vkFreeCommandBuffers;
PFN_vkDestroyRenderPass vkDestroyRenderPass;
PFN_vkDestroyFramebuffer vkDestroyFramebuffer;
PFN_vkDestroyShaderModule vkDestroyShaderModule;
PFN_vkDestroyPipelineCache vkDestroyPipelineCache;
PFN_vkCreateQueryPool vkCreateQueryPool;
PFN_vkDestroyQueryPool vkDestroyQueryPool;
PFN_vkGetQueryPoolResults vkGetQueryPoolResults;
PFN_vkCmdBeginQuery vkCmdBeginQuery;
PFN_vkCmdEndQuery vkCmdEndQuery;
PFN_vkCmdResetQueryPool vkCmdResetQueryPool;
PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults;
PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR;
PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR;
PFN_vkCmdFillBuffer vkCmdFillBuffer;
int32_t vks::android::screenDensity;
void *libVulkan;
namespace vks
{
namespace android
{
// Dynamically load Vulkan library and base function pointers
bool loadVulkanLibrary()
{
__android_log_print(ANDROID_LOG_INFO, "vulkanandroid", "Loading libvulkan.so...\n");
// Load vulkan library
libVulkan = dlopen("libvulkan.so", RTLD_NOW | RTLD_LOCAL);
if (!libVulkan)
{
__android_log_print(ANDROID_LOG_INFO, "vulkanandroid", "Could not load vulkan library : %s!\n", dlerror());
return false;
}
// Load base function pointers
vkEnumerateInstanceExtensionProperties = reinterpret_cast<PFN_vkEnumerateInstanceExtensionProperties>(dlsym(libVulkan, "vkEnumerateInstanceExtensionProperties"));
vkEnumerateInstanceLayerProperties = reinterpret_cast<PFN_vkEnumerateInstanceLayerProperties>(dlsym(libVulkan, "vkEnumerateInstanceLayerProperties"));
vkCreateInstance = reinterpret_cast<PFN_vkCreateInstance>(dlsym(libVulkan, "vkCreateInstance"));
vkGetInstanceProcAddr = reinterpret_cast<PFN_vkGetInstanceProcAddr>(dlsym(libVulkan, "vkGetInstanceProcAddr"));
vkGetDeviceProcAddr = reinterpret_cast<PFN_vkGetDeviceProcAddr>(dlsym(libVulkan, "vkGetDeviceProcAddr"));
return true;
}
// Load instance based Vulkan function pointers
void loadVulkanFunctions(VkInstance instance)
{
__android_log_print(ANDROID_LOG_INFO, "vulkanandroid", "Loading instance based function pointers...\n");
vkEnumeratePhysicalDevices = reinterpret_cast<PFN_vkEnumeratePhysicalDevices>(vkGetInstanceProcAddr(instance, "vkEnumeratePhysicalDevices"));
vkGetPhysicalDeviceProperties = reinterpret_cast<PFN_vkGetPhysicalDeviceProperties>(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceProperties"));
vkGetPhysicalDeviceProperties2 = reinterpret_cast<PFN_vkGetPhysicalDeviceProperties2>(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceProperties2"));
vkEnumerateDeviceLayerProperties = reinterpret_cast<PFN_vkEnumerateDeviceLayerProperties>(vkGetInstanceProcAddr(instance, "vkEnumerateDeviceLayerProperties"));
vkEnumerateDeviceExtensionProperties = reinterpret_cast<PFN_vkEnumerateDeviceExtensionProperties>(vkGetInstanceProcAddr(instance, "vkEnumerateDeviceExtensionProperties"));
vkGetPhysicalDeviceQueueFamilyProperties = reinterpret_cast<PFN_vkGetPhysicalDeviceQueueFamilyProperties>(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceQueueFamilyProperties"));
vkGetPhysicalDeviceFeatures = reinterpret_cast<PFN_vkGetPhysicalDeviceFeatures>(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceFeatures"));
vkGetPhysicalDeviceFeatures2 = reinterpret_cast<PFN_vkGetPhysicalDeviceFeatures2>(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceFeatures2"));
vkCreateDevice = reinterpret_cast<PFN_vkCreateDevice>(vkGetInstanceProcAddr(instance, "vkCreateDevice"));
vkGetPhysicalDeviceFormatProperties = reinterpret_cast<PFN_vkGetPhysicalDeviceFormatProperties>(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceFormatProperties"));
vkGetPhysicalDeviceMemoryProperties = reinterpret_cast<PFN_vkGetPhysicalDeviceMemoryProperties>(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceMemoryProperties"));
vkCmdPipelineBarrier = reinterpret_cast<PFN_vkCmdPipelineBarrier>(vkGetInstanceProcAddr(instance, "vkCmdPipelineBarrier"));
vkCreateShaderModule = reinterpret_cast<PFN_vkCreateShaderModule>(vkGetInstanceProcAddr(instance, "vkCreateShaderModule"));
vkCreateBuffer = reinterpret_cast<PFN_vkCreateBuffer>(vkGetInstanceProcAddr(instance, "vkCreateBuffer"));
vkGetBufferMemoryRequirements = reinterpret_cast<PFN_vkGetBufferMemoryRequirements>(vkGetInstanceProcAddr(instance, "vkGetBufferMemoryRequirements"));
vkMapMemory = reinterpret_cast<PFN_vkMapMemory>(vkGetInstanceProcAddr(instance, "vkMapMemory"));
vkUnmapMemory = reinterpret_cast<PFN_vkUnmapMemory>(vkGetInstanceProcAddr(instance, "vkUnmapMemory"));
vkFlushMappedMemoryRanges = reinterpret_cast<PFN_vkFlushMappedMemoryRanges>(vkGetInstanceProcAddr(instance, "vkFlushMappedMemoryRanges"));
vkInvalidateMappedMemoryRanges = reinterpret_cast<PFN_vkInvalidateMappedMemoryRanges>(vkGetInstanceProcAddr(instance, "vkInvalidateMappedMemoryRanges"));
vkBindBufferMemory = reinterpret_cast<PFN_vkBindBufferMemory>(vkGetInstanceProcAddr(instance, "vkBindBufferMemory"));
vkDestroyBuffer = reinterpret_cast<PFN_vkDestroyBuffer>(vkGetInstanceProcAddr(instance, "vkDestroyBuffer"));
vkAllocateMemory = reinterpret_cast<PFN_vkAllocateMemory>(vkGetInstanceProcAddr(instance, "vkAllocateMemory"));
vkFreeMemory = reinterpret_cast<PFN_vkFreeMemory>(vkGetInstanceProcAddr(instance, "vkFreeMemory"));
vkCreateRenderPass = reinterpret_cast<PFN_vkCreateRenderPass>(vkGetInstanceProcAddr(instance, "vkCreateRenderPass"));
vkCmdBeginRenderPass = reinterpret_cast<PFN_vkCmdBeginRenderPass>(vkGetInstanceProcAddr(instance, "vkCmdBeginRenderPass"));
vkCmdEndRenderPass = reinterpret_cast<PFN_vkCmdEndRenderPass>(vkGetInstanceProcAddr(instance, "vkCmdEndRenderPass"));
vkCmdNextSubpass = reinterpret_cast<PFN_vkCmdNextSubpass>(vkGetInstanceProcAddr(instance, "vkCmdNextSubpass"));
vkCmdExecuteCommands = reinterpret_cast<PFN_vkCmdExecuteCommands>(vkGetInstanceProcAddr(instance, "vkCmdExecuteCommands"));
vkCmdClearColorImage = reinterpret_cast<PFN_vkCmdClearColorImage>(vkGetInstanceProcAddr(instance, "vkCmdClearColorImage"));
vkCreateImage = reinterpret_cast<PFN_vkCreateImage>(vkGetInstanceProcAddr(instance, "vkCreateImage"));
vkGetImageMemoryRequirements = reinterpret_cast<PFN_vkGetImageMemoryRequirements>(vkGetInstanceProcAddr(instance, "vkGetImageMemoryRequirements"));
vkCreateImageView = reinterpret_cast<PFN_vkCreateImageView>(vkGetInstanceProcAddr(instance, "vkCreateImageView"));
vkDestroyImageView = reinterpret_cast<PFN_vkDestroyImageView>(vkGetInstanceProcAddr(instance, "vkDestroyImageView"));
vkBindImageMemory = reinterpret_cast<PFN_vkBindImageMemory>(vkGetInstanceProcAddr(instance, "vkBindImageMemory"));
vkGetImageSubresourceLayout = reinterpret_cast<PFN_vkGetImageSubresourceLayout>(vkGetInstanceProcAddr(instance, "vkGetImageSubresourceLayout"));
vkCmdCopyImage = reinterpret_cast<PFN_vkCmdCopyImage>(vkGetInstanceProcAddr(instance, "vkCmdCopyImage"));
vkCmdBlitImage = reinterpret_cast<PFN_vkCmdBlitImage>(vkGetInstanceProcAddr(instance, "vkCmdBlitImage"));
vkDestroyImage = reinterpret_cast<PFN_vkDestroyImage>(vkGetInstanceProcAddr(instance, "vkDestroyImage"));
vkCmdClearAttachments = reinterpret_cast<PFN_vkCmdClearAttachments>(vkGetInstanceProcAddr(instance, "vkCmdClearAttachments"));
vkCmdCopyBuffer = reinterpret_cast<PFN_vkCmdCopyBuffer>(vkGetInstanceProcAddr(instance, "vkCmdCopyBuffer"));
vkCmdCopyBufferToImage = reinterpret_cast<PFN_vkCmdCopyBufferToImage>(vkGetInstanceProcAddr(instance, "vkCmdCopyBufferToImage"));
vkCreateSampler = reinterpret_cast<PFN_vkCreateSampler>(vkGetInstanceProcAddr(instance, "vkCreateSampler"));
vkDestroySampler = reinterpret_cast<PFN_vkDestroySampler>(vkGetInstanceProcAddr(instance, "vkDestroySampler"));;
vkCreateSemaphore = reinterpret_cast<PFN_vkCreateSemaphore>(vkGetInstanceProcAddr(instance, "vkCreateSemaphore"));
vkDestroySemaphore = reinterpret_cast<PFN_vkDestroySemaphore>(vkGetInstanceProcAddr(instance, "vkDestroySemaphore"));
vkCreateFence = reinterpret_cast<PFN_vkCreateFence>(vkGetInstanceProcAddr(instance, "vkCreateFence"));
vkDestroyFence = reinterpret_cast<PFN_vkDestroyFence>(vkGetInstanceProcAddr(instance, "vkDestroyFence"));
vkWaitForFences = reinterpret_cast<PFN_vkWaitForFences>(vkGetInstanceProcAddr(instance, "vkWaitForFences"));
vkResetFences = reinterpret_cast<PFN_vkResetFences>(vkGetInstanceProcAddr(instance, "vkResetFences"));;
vkResetDescriptorPool = reinterpret_cast<PFN_vkResetDescriptorPool>(vkGetInstanceProcAddr(instance, "vkResetDescriptorPool"));
vkCreateCommandPool = reinterpret_cast<PFN_vkCreateCommandPool>(vkGetInstanceProcAddr(instance, "vkCreateCommandPool"));
vkDestroyCommandPool = reinterpret_cast<PFN_vkDestroyCommandPool>(vkGetInstanceProcAddr(instance, "vkDestroyCommandPool"));;
vkAllocateCommandBuffers = reinterpret_cast<PFN_vkAllocateCommandBuffers>(vkGetInstanceProcAddr(instance, "vkAllocateCommandBuffers"));
vkBeginCommandBuffer = reinterpret_cast<PFN_vkBeginCommandBuffer>(vkGetInstanceProcAddr(instance, "vkBeginCommandBuffer"));
vkEndCommandBuffer = reinterpret_cast<PFN_vkEndCommandBuffer>(vkGetInstanceProcAddr(instance, "vkEndCommandBuffer"));
vkGetDeviceQueue = reinterpret_cast<PFN_vkGetDeviceQueue>(vkGetInstanceProcAddr(instance, "vkGetDeviceQueue"));
vkQueueSubmit = reinterpret_cast<PFN_vkQueueSubmit>(vkGetInstanceProcAddr(instance, "vkQueueSubmit"));
vkQueueWaitIdle = reinterpret_cast<PFN_vkQueueWaitIdle>(vkGetInstanceProcAddr(instance, "vkQueueWaitIdle"));
vkDeviceWaitIdle = reinterpret_cast<PFN_vkDeviceWaitIdle>(vkGetInstanceProcAddr(instance, "vkDeviceWaitIdle"));
vkCreateFramebuffer = reinterpret_cast<PFN_vkCreateFramebuffer>(vkGetInstanceProcAddr(instance, "vkCreateFramebuffer"));
vkCreatePipelineCache = reinterpret_cast<PFN_vkCreatePipelineCache>(vkGetInstanceProcAddr(instance, "vkCreatePipelineCache"));
vkCreatePipelineLayout = reinterpret_cast<PFN_vkCreatePipelineLayout>(vkGetInstanceProcAddr(instance, "vkCreatePipelineLayout"));
vkCreateGraphicsPipelines = reinterpret_cast<PFN_vkCreateGraphicsPipelines>(vkGetInstanceProcAddr(instance, "vkCreateGraphicsPipelines"));
vkCreateComputePipelines = reinterpret_cast<PFN_vkCreateComputePipelines>(vkGetInstanceProcAddr(instance, "vkCreateComputePipelines"));
vkCreateDescriptorPool = reinterpret_cast<PFN_vkCreateDescriptorPool>(vkGetInstanceProcAddr(instance, "vkCreateDescriptorPool"));
vkCreateDescriptorSetLayout = reinterpret_cast<PFN_vkCreateDescriptorSetLayout>(vkGetInstanceProcAddr(instance, "vkCreateDescriptorSetLayout"));
vkAllocateDescriptorSets = reinterpret_cast<PFN_vkAllocateDescriptorSets>(vkGetInstanceProcAddr(instance, "vkAllocateDescriptorSets"));
vkUpdateDescriptorSets = reinterpret_cast<PFN_vkUpdateDescriptorSets>(vkGetInstanceProcAddr(instance, "vkUpdateDescriptorSets"));
vkCmdBindDescriptorSets = reinterpret_cast<PFN_vkCmdBindDescriptorSets>(vkGetInstanceProcAddr(instance, "vkCmdBindDescriptorSets"));
vkCmdBindPipeline = reinterpret_cast<PFN_vkCmdBindPipeline>(vkGetInstanceProcAddr(instance, "vkCmdBindPipeline"));
vkCmdBindVertexBuffers = reinterpret_cast<PFN_vkCmdBindVertexBuffers>(vkGetInstanceProcAddr(instance, "vkCmdBindVertexBuffers"));
vkCmdBindIndexBuffer = reinterpret_cast<PFN_vkCmdBindIndexBuffer>(vkGetInstanceProcAddr(instance, "vkCmdBindIndexBuffer"));
vkCmdSetViewport = reinterpret_cast<PFN_vkCmdSetViewport>(vkGetInstanceProcAddr(instance, "vkCmdSetViewport"));
vkCmdSetScissor = reinterpret_cast<PFN_vkCmdSetScissor>(vkGetInstanceProcAddr(instance, "vkCmdSetScissor"));
vkCmdSetLineWidth = reinterpret_cast<PFN_vkCmdSetLineWidth>(vkGetInstanceProcAddr(instance, "vkCmdSetLineWidth"));
vkCmdSetDepthBias = reinterpret_cast<PFN_vkCmdSetDepthBias>(vkGetInstanceProcAddr(instance, "vkCmdSetDepthBias"));
vkCmdPushConstants = reinterpret_cast<PFN_vkCmdPushConstants>(vkGetInstanceProcAddr(instance, "vkCmdPushConstants"));;
vkCmdDrawIndexed = reinterpret_cast<PFN_vkCmdDrawIndexed>(vkGetInstanceProcAddr(instance, "vkCmdDrawIndexed"));
vkCmdDraw = reinterpret_cast<PFN_vkCmdDraw>(vkGetInstanceProcAddr(instance, "vkCmdDraw"));
vkCmdDrawIndexedIndirect = reinterpret_cast<PFN_vkCmdDrawIndexedIndirect>(vkGetInstanceProcAddr(instance, "vkCmdDrawIndexedIndirect"));
vkCmdDrawIndirect = reinterpret_cast<PFN_vkCmdDrawIndirect>(vkGetInstanceProcAddr(instance, "vkCmdDrawIndirect"));
vkCmdDispatch = reinterpret_cast<PFN_vkCmdDispatch>(vkGetInstanceProcAddr(instance, "vkCmdDispatch"));
vkDestroyPipeline = reinterpret_cast<PFN_vkDestroyPipeline>(vkGetInstanceProcAddr(instance, "vkDestroyPipeline"));
vkDestroyPipelineLayout = reinterpret_cast<PFN_vkDestroyPipelineLayout>(vkGetInstanceProcAddr(instance, "vkDestroyPipelineLayout"));;
vkDestroyDescriptorSetLayout = reinterpret_cast<PFN_vkDestroyDescriptorSetLayout>(vkGetInstanceProcAddr(instance, "vkDestroyDescriptorSetLayout"));
vkDestroyDevice = reinterpret_cast<PFN_vkDestroyDevice>(vkGetInstanceProcAddr(instance, "vkDestroyDevice"));
vkDestroyInstance = reinterpret_cast<PFN_vkDestroyInstance>(vkGetInstanceProcAddr(instance, "vkDestroyInstance"));
vkDestroyDescriptorPool = reinterpret_cast<PFN_vkDestroyDescriptorPool>(vkGetInstanceProcAddr(instance, "vkDestroyDescriptorPool"));
vkFreeCommandBuffers = reinterpret_cast<PFN_vkFreeCommandBuffers>(vkGetInstanceProcAddr(instance, "vkFreeCommandBuffers"));
vkDestroyRenderPass = reinterpret_cast<PFN_vkDestroyRenderPass>(vkGetInstanceProcAddr(instance, "vkDestroyRenderPass"));
vkDestroyFramebuffer = reinterpret_cast<PFN_vkDestroyFramebuffer>(vkGetInstanceProcAddr(instance, "vkDestroyFramebuffer"));
vkDestroyShaderModule = reinterpret_cast<PFN_vkDestroyShaderModule>(vkGetInstanceProcAddr(instance, "vkDestroyShaderModule"));
vkDestroyPipelineCache = reinterpret_cast<PFN_vkDestroyPipelineCache>(vkGetInstanceProcAddr(instance, "vkDestroyPipelineCache"));
vkCreateQueryPool = reinterpret_cast<PFN_vkCreateQueryPool>(vkGetInstanceProcAddr(instance, "vkCreateQueryPool"));
vkDestroyQueryPool = reinterpret_cast<PFN_vkDestroyQueryPool>(vkGetInstanceProcAddr(instance, "vkDestroyQueryPool"));
vkGetQueryPoolResults = reinterpret_cast<PFN_vkGetQueryPoolResults>(vkGetInstanceProcAddr(instance, "vkGetQueryPoolResults"));
vkCmdBeginQuery = reinterpret_cast<PFN_vkCmdBeginQuery>(vkGetInstanceProcAddr(instance, "vkCmdBeginQuery"));
vkCmdEndQuery = reinterpret_cast<PFN_vkCmdEndQuery>(vkGetInstanceProcAddr(instance, "vkCmdEndQuery"));
vkCmdResetQueryPool = reinterpret_cast<PFN_vkCmdResetQueryPool>(vkGetInstanceProcAddr(instance, "vkCmdResetQueryPool"));
vkCmdCopyQueryPoolResults = reinterpret_cast<PFN_vkCmdCopyQueryPoolResults>(vkGetInstanceProcAddr(instance, "vkCmdCopyQueryPoolResults"));
vkCreateAndroidSurfaceKHR = reinterpret_cast<PFN_vkCreateAndroidSurfaceKHR>(vkGetInstanceProcAddr(instance, "vkCreateAndroidSurfaceKHR"));
vkDestroySurfaceKHR = reinterpret_cast<PFN_vkDestroySurfaceKHR>(vkGetInstanceProcAddr(instance, "vkDestroySurfaceKHR"));
vkCmdFillBuffer = reinterpret_cast<PFN_vkCmdFillBuffer>(vkGetInstanceProcAddr(instance, "vkCmdFillBuffer"));
}
void freeVulkanLibrary()
{
dlclose(libVulkan);
}
void getDeviceConfig()
{
// Screen density
AConfiguration* config = AConfiguration_new();
AConfiguration_fromAssetManager(config, androidApp->activity->assetManager);
vks::android::screenDensity = AConfiguration_getDensity(config);
AConfiguration_delete(config);
}
// Displays a native alert dialog using JNI
void showAlert(const char* message) {
JNIEnv* jni;
androidApp->activity->vm->AttachCurrentThread(&jni, NULL);
jstring jmessage = jni->NewStringUTF(message);
jclass clazz = jni->GetObjectClass(androidApp->activity->clazz);
// Signature has to match java implementation (arguments)
jmethodID methodID = jni->GetMethodID(clazz, "showAlert", "(Ljava/lang/String;)V");
jni->CallVoidMethod(androidApp->activity->clazz, methodID, jmessage);
jni->DeleteLocalRef(jmessage);
androidApp->activity->vm->DetachCurrentThread();
return;
}
}
}
#endif

View File

@ -0,0 +1,188 @@
/*
* Android Vulkan function pointer prototypes
*
* Copyright (C) 2016 by Sascha Willems - www.saschawillems.de
*
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
*/
#pragma once
#ifndef VULKANANDROID_H
#define VULKANANDROID_H
// Vulkan needs to be loaded dynamically on android
#pragma once
#ifndef VULKANANDROID_HPP
#define VULKANANDROID_HPP
#include "vulkan/vulkan.h"
#if defined(__ANDROID__)
#include <android/log.h>
#include <android_native_app_glue.h>
#include <android/configuration.h>
#include <memory>
#include <string>
// Missing from the NDK
namespace std
{
template<typename T, typename... Args>
std::unique_ptr<T> make_unique(Args&&... args)
{
return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
}
}
// Global reference to android application object
extern android_app* androidApp;
#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "vulkanExample", __VA_ARGS__))
#define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, "vulkanExample", __VA_ARGS__))
#define LOGD(...) ((void)__android_log_print(ANDROID_LOG_DEBUG, "vulkanExample", __VA_ARGS__))
#define LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR, "vulkanExample", __VA_ARGS__))
// Function pointer prototypes
// Not complete, just the functions used in the caps viewer!
extern PFN_vkCreateInstance vkCreateInstance;
extern PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr;
extern PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr;
extern PFN_vkCreateDevice vkCreateDevice;
extern PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices;
extern PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties;
extern PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2;
extern PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties;
extern PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties;
extern PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties;
extern PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures;
extern PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2;
extern PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties;
extern PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties;
extern PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties;
extern PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties;
extern PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier;
extern PFN_vkCreateShaderModule vkCreateShaderModule;
extern PFN_vkCreateBuffer vkCreateBuffer;
extern PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements;
extern PFN_vkMapMemory vkMapMemory;
extern PFN_vkUnmapMemory vkUnmapMemory;
extern PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges;
extern PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges;
extern PFN_vkBindBufferMemory vkBindBufferMemory;
extern PFN_vkDestroyBuffer vkDestroyBuffer;
extern PFN_vkAllocateMemory vkAllocateMemory;
extern PFN_vkBindImageMemory vkBindImageMemory;
extern PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout;
extern PFN_vkCmdCopyBuffer vkCmdCopyBuffer;
extern PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage;
extern PFN_vkCmdCopyImage vkCmdCopyImage;
extern PFN_vkCmdBlitImage vkCmdBlitImage;
extern PFN_vkCmdClearAttachments vkCmdClearAttachments;
extern PFN_vkCreateSampler vkCreateSampler;
extern PFN_vkDestroySampler vkDestroySampler;
extern PFN_vkDestroyImage vkDestroyImage;
extern PFN_vkFreeMemory vkFreeMemory;
extern PFN_vkCreateRenderPass vkCreateRenderPass;
extern PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass;
extern PFN_vkCmdEndRenderPass vkCmdEndRenderPass;
extern PFN_vkCmdNextSubpass vkCmdNextSubpass;
extern PFN_vkCmdExecuteCommands vkCmdExecuteCommands;
extern PFN_vkCmdClearColorImage vkCmdClearColorImage;
extern PFN_vkCreateImage vkCreateImage;
extern PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements;
extern PFN_vkCreateImageView vkCreateImageView;
extern PFN_vkDestroyImageView vkDestroyImageView;
extern PFN_vkCreateSemaphore vkCreateSemaphore;
extern PFN_vkDestroySemaphore vkDestroySemaphore;
extern PFN_vkCreateFence vkCreateFence;
extern PFN_vkDestroyFence vkDestroyFence;
extern PFN_vkWaitForFences vkWaitForFences;
extern PFN_vkResetFences vkResetFences;
extern PFN_vkResetDescriptorPool vkResetDescriptorPool;
extern PFN_vkCreateCommandPool vkCreateCommandPool;
extern PFN_vkDestroyCommandPool vkDestroyCommandPool;
extern PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers;
extern PFN_vkBeginCommandBuffer vkBeginCommandBuffer;
extern PFN_vkEndCommandBuffer vkEndCommandBuffer;
extern PFN_vkGetDeviceQueue vkGetDeviceQueue;
extern PFN_vkQueueSubmit vkQueueSubmit;
extern PFN_vkQueueWaitIdle vkQueueWaitIdle;
extern PFN_vkDeviceWaitIdle vkDeviceWaitIdle;
extern PFN_vkCreateFramebuffer vkCreateFramebuffer;
extern PFN_vkCreatePipelineCache vkCreatePipelineCache;
extern PFN_vkCreatePipelineLayout vkCreatePipelineLayout;
extern PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines;
extern PFN_vkCreateComputePipelines vkCreateComputePipelines;
extern PFN_vkCreateDescriptorPool vkCreateDescriptorPool;
extern PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout;
extern PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets;
extern PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets;
extern PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets;
extern PFN_vkCmdBindPipeline vkCmdBindPipeline;
extern PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers;
extern PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer;
extern PFN_vkCmdSetViewport vkCmdSetViewport;
extern PFN_vkCmdSetScissor vkCmdSetScissor;
extern PFN_vkCmdSetLineWidth vkCmdSetLineWidth;
extern PFN_vkCmdSetDepthBias vkCmdSetDepthBias;
extern PFN_vkCmdPushConstants vkCmdPushConstants;
extern PFN_vkCmdDrawIndexed vkCmdDrawIndexed;
extern PFN_vkCmdDraw vkCmdDraw;
extern PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect;
extern PFN_vkCmdDrawIndirect vkCmdDrawIndirect;
extern PFN_vkCmdDispatch vkCmdDispatch;
extern PFN_vkDestroyPipeline vkDestroyPipeline;
extern PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout;
extern PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout;
extern PFN_vkDestroyDevice vkDestroyDevice;
extern PFN_vkDestroyInstance vkDestroyInstance;
extern PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool;
extern PFN_vkFreeCommandBuffers vkFreeCommandBuffers;
extern PFN_vkDestroyRenderPass vkDestroyRenderPass;
extern PFN_vkDestroyFramebuffer vkDestroyFramebuffer;
extern PFN_vkDestroyShaderModule vkDestroyShaderModule;
extern PFN_vkDestroyPipelineCache vkDestroyPipelineCache;
extern PFN_vkCreateQueryPool vkCreateQueryPool;
extern PFN_vkDestroyQueryPool vkDestroyQueryPool;
extern PFN_vkGetQueryPoolResults vkGetQueryPoolResults;
extern PFN_vkCmdBeginQuery vkCmdBeginQuery;
extern PFN_vkCmdEndQuery vkCmdEndQuery;
extern PFN_vkCmdResetQueryPool vkCmdResetQueryPool;
extern PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults;
extern PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR;
extern PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR;
extern PFN_vkCmdFillBuffer vkCmdFillBuffer;
namespace vks
{
namespace android
{
/* @brief Touch control thresholds from Android NDK samples */
const int32_t DOUBLE_TAP_TIMEOUT = 300 * 1000000;
const int32_t TAP_TIMEOUT = 180 * 1000000;
const int32_t DOUBLE_TAP_SLOP = 100;
const int32_t TAP_SLOP = 8;
/** @brief Density of the device screen (in DPI) */
extern int32_t screenDensity;
bool loadVulkanLibrary();
void loadVulkanFunctions(VkInstance instance);
void freeVulkanLibrary();
void getDeviceConfig();
void showAlert(const char* message);
}
}
#endif
#endif // VULKANANDROID_HPP
#endif // VULKANANDROID_H

View File

@ -0,0 +1,261 @@
/*
* Vulkan examples debug wrapper
*
* Copyright (C) by Sascha Willems - www.saschawillems.de
*
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
*/
#include "VulkanDebug.h"
#include <iostream>
namespace vks
{
namespace debug
{
PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT;
PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT;
VkDebugUtilsMessengerEXT debugUtilsMessenger;
VKAPI_ATTR VkBool32 VKAPI_CALL debugUtilsMessengerCallback(
VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
VkDebugUtilsMessageTypeFlagsEXT messageType,
const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData,
void* pUserData)
{
// Select prefix depending on flags passed to the callback
std::string prefix("");
if (messageSeverity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT) {
prefix = "VERBOSE: ";
}
else if (messageSeverity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT) {
prefix = "INFO: ";
}
else if (messageSeverity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT) {
prefix = "WARNING: ";
}
else if (messageSeverity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT) {
prefix = "ERROR: ";
}
// Display message to default output (console/logcat)
std::stringstream debugMessage;
debugMessage << prefix << "[" << pCallbackData->messageIdNumber << "][" << pCallbackData->pMessageIdName << "] : " << pCallbackData->pMessage;
#if defined(__ANDROID__)
if (messageSeverity >= VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT) {
LOGE("%s", debugMessage.str().c_str());
} else {
LOGD("%s", debugMessage.str().c_str());
}
#else
if (messageSeverity >= VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT) {
std::cerr << debugMessage.str() << "\n";
} else {
std::cout << debugMessage.str() << "\n";
}
fflush(stdout);
#endif
// The return value of this callback controls whether the Vulkan call that caused the validation message will be aborted or not
// We return VK_FALSE as we DON'T want Vulkan calls that cause a validation message to abort
// If you instead want to have calls abort, pass in VK_TRUE and the function will return VK_ERROR_VALIDATION_FAILED_EXT
return VK_FALSE;
}
void setupDebugging(VkInstance instance)
{
vkCreateDebugUtilsMessengerEXT = reinterpret_cast<PFN_vkCreateDebugUtilsMessengerEXT>(vkGetInstanceProcAddr(instance, "vkCreateDebugUtilsMessengerEXT"));
vkDestroyDebugUtilsMessengerEXT = reinterpret_cast<PFN_vkDestroyDebugUtilsMessengerEXT>(vkGetInstanceProcAddr(instance, "vkDestroyDebugUtilsMessengerEXT"));
VkDebugUtilsMessengerCreateInfoEXT debugUtilsMessengerCI{};
debugUtilsMessengerCI.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT;
debugUtilsMessengerCI.messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT;
debugUtilsMessengerCI.messageType = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT;
debugUtilsMessengerCI.pfnUserCallback = debugUtilsMessengerCallback;
VkResult result = vkCreateDebugUtilsMessengerEXT(instance, &debugUtilsMessengerCI, nullptr, &debugUtilsMessenger);
assert(result == VK_SUCCESS);
}
void freeDebugCallback(VkInstance instance)
{
if (debugUtilsMessenger != VK_NULL_HANDLE)
{
vkDestroyDebugUtilsMessengerEXT(instance, debugUtilsMessenger, nullptr);
}
}
}
namespace debugmarker
{
bool active = false;
PFN_vkDebugMarkerSetObjectTagEXT pfnDebugMarkerSetObjectTag = VK_NULL_HANDLE;
PFN_vkDebugMarkerSetObjectNameEXT pfnDebugMarkerSetObjectName = VK_NULL_HANDLE;
PFN_vkCmdDebugMarkerBeginEXT pfnCmdDebugMarkerBegin = VK_NULL_HANDLE;
PFN_vkCmdDebugMarkerEndEXT pfnCmdDebugMarkerEnd = VK_NULL_HANDLE;
PFN_vkCmdDebugMarkerInsertEXT pfnCmdDebugMarkerInsert = VK_NULL_HANDLE;
void setup(VkDevice device)
{
pfnDebugMarkerSetObjectTag = reinterpret_cast<PFN_vkDebugMarkerSetObjectTagEXT>(vkGetDeviceProcAddr(device, "vkDebugMarkerSetObjectTagEXT"));
pfnDebugMarkerSetObjectName = reinterpret_cast<PFN_vkDebugMarkerSetObjectNameEXT>(vkGetDeviceProcAddr(device, "vkDebugMarkerSetObjectNameEXT"));
pfnCmdDebugMarkerBegin = reinterpret_cast<PFN_vkCmdDebugMarkerBeginEXT>(vkGetDeviceProcAddr(device, "vkCmdDebugMarkerBeginEXT"));
pfnCmdDebugMarkerEnd = reinterpret_cast<PFN_vkCmdDebugMarkerEndEXT>(vkGetDeviceProcAddr(device, "vkCmdDebugMarkerEndEXT"));
pfnCmdDebugMarkerInsert = reinterpret_cast<PFN_vkCmdDebugMarkerInsertEXT>(vkGetDeviceProcAddr(device, "vkCmdDebugMarkerInsertEXT"));
// Set flag if at least one function pointer is present
active = (pfnDebugMarkerSetObjectName != VK_NULL_HANDLE);
}
void setObjectName(VkDevice device, uint64_t object, VkDebugReportObjectTypeEXT objectType, const char *name)
{
// Check for valid function pointer (may not be present if not running in a debugging application)
if (pfnDebugMarkerSetObjectName)
{
VkDebugMarkerObjectNameInfoEXT nameInfo = {};
nameInfo.sType = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT;
nameInfo.objectType = objectType;
nameInfo.object = object;
nameInfo.pObjectName = name;
pfnDebugMarkerSetObjectName(device, &nameInfo);
}
}
void setObjectTag(VkDevice device, uint64_t object, VkDebugReportObjectTypeEXT objectType, uint64_t name, size_t tagSize, const void* tag)
{
// Check for valid function pointer (may not be present if not running in a debugging application)
if (pfnDebugMarkerSetObjectTag)
{
VkDebugMarkerObjectTagInfoEXT tagInfo = {};
tagInfo.sType = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT;
tagInfo.objectType = objectType;
tagInfo.object = object;
tagInfo.tagName = name;
tagInfo.tagSize = tagSize;
tagInfo.pTag = tag;
pfnDebugMarkerSetObjectTag(device, &tagInfo);
}
}
void beginRegion(VkCommandBuffer cmdbuffer, const char* pMarkerName, glm::vec4 color)
{
// Check for valid function pointer (may not be present if not running in a debugging application)
if (pfnCmdDebugMarkerBegin)
{
VkDebugMarkerMarkerInfoEXT markerInfo = {};
markerInfo.sType = VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT;
memcpy(markerInfo.color, &color[0], sizeof(float) * 4);
markerInfo.pMarkerName = pMarkerName;
pfnCmdDebugMarkerBegin(cmdbuffer, &markerInfo);
}
}
void insert(VkCommandBuffer cmdbuffer, std::string markerName, glm::vec4 color)
{
// Check for valid function pointer (may not be present if not running in a debugging application)
if (pfnCmdDebugMarkerInsert)
{
VkDebugMarkerMarkerInfoEXT markerInfo = {};
markerInfo.sType = VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT;
memcpy(markerInfo.color, &color[0], sizeof(float) * 4);
markerInfo.pMarkerName = markerName.c_str();
pfnCmdDebugMarkerInsert(cmdbuffer, &markerInfo);
}
}
void endRegion(VkCommandBuffer cmdBuffer)
{
// Check for valid function (may not be present if not running in a debugging application)
if (pfnCmdDebugMarkerEnd)
{
pfnCmdDebugMarkerEnd(cmdBuffer);
}
}
void setCommandBufferName(VkDevice device, VkCommandBuffer cmdBuffer, const char * name)
{
setObjectName(device, (uint64_t)cmdBuffer, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, name);
}
void setQueueName(VkDevice device, VkQueue queue, const char * name)
{
setObjectName(device, (uint64_t)queue, VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT, name);
}
void setImageName(VkDevice device, VkImage image, const char * name)
{
setObjectName(device, (uint64_t)image, VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT, name);
}
void setSamplerName(VkDevice device, VkSampler sampler, const char * name)
{
setObjectName(device, (uint64_t)sampler, VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT, name);
}
void setBufferName(VkDevice device, VkBuffer buffer, const char * name)
{
setObjectName(device, (uint64_t)buffer, VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT, name);
}
void setDeviceMemoryName(VkDevice device, VkDeviceMemory memory, const char * name)
{
setObjectName(device, (uint64_t)memory, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT, name);
}
void setShaderModuleName(VkDevice device, VkShaderModule shaderModule, const char * name)
{
setObjectName(device, (uint64_t)shaderModule, VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT, name);
}
void setPipelineName(VkDevice device, VkPipeline pipeline, const char * name)
{
setObjectName(device, (uint64_t)pipeline, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, name);
}
void setPipelineLayoutName(VkDevice device, VkPipelineLayout pipelineLayout, const char * name)
{
setObjectName(device, (uint64_t)pipelineLayout, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT, name);
}
void setRenderPassName(VkDevice device, VkRenderPass renderPass, const char * name)
{
setObjectName(device, (uint64_t)renderPass, VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, name);
}
void setFramebufferName(VkDevice device, VkFramebuffer framebuffer, const char * name)
{
setObjectName(device, (uint64_t)framebuffer, VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT, name);
}
void setDescriptorSetLayoutName(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const char * name)
{
setObjectName(device, (uint64_t)descriptorSetLayout, VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT, name);
}
void setDescriptorSetName(VkDevice device, VkDescriptorSet descriptorSet, const char * name)
{
setObjectName(device, (uint64_t)descriptorSet, VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT, name);
}
void setSemaphoreName(VkDevice device, VkSemaphore semaphore, const char * name)
{
setObjectName(device, (uint64_t)semaphore, VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT, name);
}
void setFenceName(VkDevice device, VkFence fence, const char * name)
{
setObjectName(device, (uint64_t)fence, VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT, name);
}
void setEventName(VkDevice device, VkEvent _event, const char * name)
{
setObjectName(device, (uint64_t)_event, VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT, name);
}
};
}

94
base/VulkanDebug.h 100644
View File

@ -0,0 +1,94 @@
#pragma once
#include "vulkan/vulkan.h"
#include <math.h>
#include <stdlib.h>
#include <string>
#include <cstring>
#include <fstream>
#include <assert.h>
#include <stdio.h>
#include <vector>
#include <sstream>
#ifdef _WIN32
#include <windows.h>
#include <fcntl.h>
#include <io.h>
#endif
#ifdef __ANDROID__
#include "VulkanAndroid.h"
#endif
#define GLM_FORCE_RADIANS
#define GLM_FORCE_DEPTH_ZERO_TO_ONE
#include <glm/glm.hpp>
namespace vks
{
namespace debug
{
// Default debug callback
VKAPI_ATTR VkBool32 VKAPI_CALL messageCallback(
VkDebugReportFlagsEXT flags,
VkDebugReportObjectTypeEXT objType,
uint64_t srcObject,
size_t location,
int32_t msgCode,
const char* pLayerPrefix,
const char* pMsg,
void* pUserData);
// Load debug function pointers and set debug callback
void setupDebugging(VkInstance instance);
// Clear debug callback
void freeDebugCallback(VkInstance instance);
}
// Setup and functions for the VK_EXT_debug_marker_extension
// Extension spec can be found at https://github.com/KhronosGroup/Vulkan-Docs/blob/1.0-VK_EXT_debug_marker/doc/specs/vulkan/appendices/VK_EXT_debug_marker.txt
// Note that the extension will only be present if run from an offline debugging application
// The actual check for extension presence and enabling it on the device is done in the example base class
// See VulkanExampleBase::createInstance and VulkanExampleBase::createDevice (base/vulkanexamplebase.cpp)
namespace debugmarker
{
// Set to true if function pointer for the debug marker are available
extern bool active;
// Get function pointers for the debug report extensions from the device
void setup(VkDevice device);
// Sets the debug name of an object
// All Objects in Vulkan are represented by their 64-bit handles which are passed into this function
// along with the object type
void setObjectName(VkDevice device, uint64_t object, VkDebugReportObjectTypeEXT objectType, const char *name);
// Set the tag for an object
void setObjectTag(VkDevice device, uint64_t object, VkDebugReportObjectTypeEXT objectType, uint64_t name, size_t tagSize, const void* tag);
// Start a new debug marker region
void beginRegion(VkCommandBuffer cmdbuffer, const char* pMarkerName, glm::vec4 color);
// Insert a new debug marker into the command buffer
void insert(VkCommandBuffer cmdbuffer, std::string markerName, glm::vec4 color);
// End the current debug marker region
void endRegion(VkCommandBuffer cmdBuffer);
// Object specific naming functions
void setCommandBufferName(VkDevice device, VkCommandBuffer cmdBuffer, const char * name);
void setQueueName(VkDevice device, VkQueue queue, const char * name);
void setImageName(VkDevice device, VkImage image, const char * name);
void setSamplerName(VkDevice device, VkSampler sampler, const char * name);
void setBufferName(VkDevice device, VkBuffer buffer, const char * name);
void setDeviceMemoryName(VkDevice device, VkDeviceMemory memory, const char * name);
void setShaderModuleName(VkDevice device, VkShaderModule shaderModule, const char * name);
void setPipelineName(VkDevice device, VkPipeline pipeline, const char * name);
void setPipelineLayoutName(VkDevice device, VkPipelineLayout pipelineLayout, const char * name);
void setRenderPassName(VkDevice device, VkRenderPass renderPass, const char * name);
void setFramebufferName(VkDevice device, VkFramebuffer framebuffer, const char * name);
void setDescriptorSetLayoutName(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const char * name);
void setDescriptorSetName(VkDevice device, VkDescriptorSet descriptorSet, const char * name);
void setSemaphoreName(VkDevice device, VkSemaphore semaphore, const char * name);
void setFenceName(VkDevice device, VkFence fence, const char * name);
void setEventName(VkDevice device, VkEvent _event, const char * name);
};
}

View File

@ -0,0 +1,596 @@
/*
* Vulkan device class
*
* Encapsulates a physical Vulkan device and its logical representation
*
* Copyright (C) by Sascha Willems - www.saschawillems.de
*
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
*/
#if (defined(VK_USE_PLATFORM_IOS_MVK) || defined(VK_USE_PLATFORM_MACOS_MVK))
// SRS - Enable beta extensions and make VK_KHR_portability_subset visible
#define VK_ENABLE_BETA_EXTENSIONS
#endif
#include <VulkanDevice.h>
#include <unordered_set>
namespace vks
{
/**
* Default constructor
*
* @param physicalDevice Physical device that is to be used
*/
VulkanDevice::VulkanDevice(VkPhysicalDevice physicalDevice)
{
assert(physicalDevice);
this->physicalDevice = physicalDevice;
// Store Properties features, limits and properties of the physical device for later use
// Device properties also contain limits and sparse properties
vkGetPhysicalDeviceProperties(physicalDevice, &properties);
// Features should be checked by the examples before using them
vkGetPhysicalDeviceFeatures(physicalDevice, &features);
// Memory properties are used regularly for creating all kinds of buffers
vkGetPhysicalDeviceMemoryProperties(physicalDevice, &memoryProperties);
// Queue family properties, used for setting up requested queues upon device creation
uint32_t queueFamilyCount;
vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, &queueFamilyCount, nullptr);
assert(queueFamilyCount > 0);
queueFamilyProperties.resize(queueFamilyCount);
vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, &queueFamilyCount, queueFamilyProperties.data());
// Get list of supported extensions
uint32_t extCount = 0;
vkEnumerateDeviceExtensionProperties(physicalDevice, nullptr, &extCount, nullptr);
if (extCount > 0)
{
std::vector<VkExtensionProperties> extensions(extCount);
if (vkEnumerateDeviceExtensionProperties(physicalDevice, nullptr, &extCount, &extensions.front()) == VK_SUCCESS)
{
for (auto ext : extensions)
{
supportedExtensions.push_back(ext.extensionName);
}
}
}
}
/**
* Default destructor
*
* @note Frees the logical device
*/
VulkanDevice::~VulkanDevice()
{
if (commandPool)
{
vkDestroyCommandPool(logicalDevice, commandPool, nullptr);
}
if (logicalDevice)
{
vkDestroyDevice(logicalDevice, nullptr);
}
}
/**
* Get the index of a memory type that has all the requested property bits set
*
* @param typeBits Bit mask with bits set for each memory type supported by the resource to request for (from VkMemoryRequirements)
* @param properties Bit mask of properties for the memory type to request
* @param (Optional) memTypeFound Pointer to a bool that is set to true if a matching memory type has been found
*
* @return Index of the requested memory type
*
* @throw Throws an exception if memTypeFound is null and no memory type could be found that supports the requested properties
*/
uint32_t VulkanDevice::getMemoryType(uint32_t typeBits, VkMemoryPropertyFlags properties, VkBool32 *memTypeFound) const
{
for (uint32_t i = 0; i < memoryProperties.memoryTypeCount; i++)
{
if ((typeBits & 1) == 1)
{
if ((memoryProperties.memoryTypes[i].propertyFlags & properties) == properties)
{
if (memTypeFound)
{
*memTypeFound = true;
}
return i;
}
}
typeBits >>= 1;
}
if (memTypeFound)
{
*memTypeFound = false;
return 0;
}
else
{
throw std::runtime_error("Could not find a matching memory type");
}
}
/**
* Get the index of a queue family that supports the requested queue flags
* SRS - support VkQueueFlags parameter for requesting multiple flags vs. VkQueueFlagBits for a single flag only
*
* @param queueFlags Queue flags to find a queue family index for
*
* @return Index of the queue family index that matches the flags
*
* @throw Throws an exception if no queue family index could be found that supports the requested flags
*/
uint32_t VulkanDevice::getQueueFamilyIndex(VkQueueFlags queueFlags) const
{
// Dedicated queue for compute
// Try to find a queue family index that supports compute but not graphics
if ((queueFlags & VK_QUEUE_COMPUTE_BIT) == queueFlags)
{
for (uint32_t i = 0; i < static_cast<uint32_t>(queueFamilyProperties.size()); i++)
{
if ((queueFamilyProperties[i].queueFlags & VK_QUEUE_COMPUTE_BIT) && ((queueFamilyProperties[i].queueFlags & VK_QUEUE_GRAPHICS_BIT) == 0))
{
return i;
}
}
}
// Dedicated queue for transfer
// Try to find a queue family index that supports transfer but not graphics and compute
if ((queueFlags & VK_QUEUE_TRANSFER_BIT) == queueFlags)
{
for (uint32_t i = 0; i < static_cast<uint32_t>(queueFamilyProperties.size()); i++)
{
if ((queueFamilyProperties[i].queueFlags & VK_QUEUE_TRANSFER_BIT) && ((queueFamilyProperties[i].queueFlags & VK_QUEUE_GRAPHICS_BIT) == 0) && ((queueFamilyProperties[i].queueFlags & VK_QUEUE_COMPUTE_BIT) == 0))
{
return i;
}
}
}
// For other queue types or if no separate compute queue is present, return the first one to support the requested flags
for (uint32_t i = 0; i < static_cast<uint32_t>(queueFamilyProperties.size()); i++)
{
if ((queueFamilyProperties[i].queueFlags & queueFlags) == queueFlags)
{
return i;
}
}
throw std::runtime_error("Could not find a matching queue family index");
}
/**
* Create the logical device based on the assigned physical device, also gets default queue family indices
*
* @param enabledFeatures Can be used to enable certain features upon device creation
* @param pNextChain Optional chain of pointer to extension structures
* @param useSwapChain Set to false for headless rendering to omit the swapchain device extensions
* @param requestedQueueTypes Bit flags specifying the queue types to be requested from the device
*
* @return VkResult of the device creation call
*/
VkResult VulkanDevice::createLogicalDevice(VkPhysicalDeviceFeatures enabledFeatures, std::vector<const char*> enabledExtensions, void* pNextChain, bool useSwapChain, VkQueueFlags requestedQueueTypes)
{
// Desired queues need to be requested upon logical device creation
// Due to differing queue family configurations of Vulkan implementations this can be a bit tricky, especially if the application
// requests different queue types
std::vector<VkDeviceQueueCreateInfo> queueCreateInfos{};
// Get queue family indices for the requested queue family types
// Note that the indices may overlap depending on the implementation
const float defaultQueuePriority(0.0f);
// Graphics queue
if (requestedQueueTypes & VK_QUEUE_GRAPHICS_BIT)
{
queueFamilyIndices.graphics = getQueueFamilyIndex(VK_QUEUE_GRAPHICS_BIT);
VkDeviceQueueCreateInfo queueInfo{};
queueInfo.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
queueInfo.queueFamilyIndex = queueFamilyIndices.graphics;
queueInfo.queueCount = 1;
queueInfo.pQueuePriorities = &defaultQueuePriority;
queueCreateInfos.push_back(queueInfo);
}
else
{
queueFamilyIndices.graphics = 0;
}
// Dedicated compute queue
if (requestedQueueTypes & VK_QUEUE_COMPUTE_BIT)
{
queueFamilyIndices.compute = getQueueFamilyIndex(VK_QUEUE_COMPUTE_BIT);
if (queueFamilyIndices.compute != queueFamilyIndices.graphics)
{
// If compute family index differs, we need an additional queue create info for the compute queue
VkDeviceQueueCreateInfo queueInfo{};
queueInfo.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
queueInfo.queueFamilyIndex = queueFamilyIndices.compute;
queueInfo.queueCount = 1;
queueInfo.pQueuePriorities = &defaultQueuePriority;
queueCreateInfos.push_back(queueInfo);
}
}
else
{
// Else we use the same queue
queueFamilyIndices.compute = queueFamilyIndices.graphics;
}
// Dedicated transfer queue
if (requestedQueueTypes & VK_QUEUE_TRANSFER_BIT)
{
queueFamilyIndices.transfer = getQueueFamilyIndex(VK_QUEUE_TRANSFER_BIT);
if ((queueFamilyIndices.transfer != queueFamilyIndices.graphics) && (queueFamilyIndices.transfer != queueFamilyIndices.compute))
{
// If transfer family index differs, we need an additional queue create info for the transfer queue
VkDeviceQueueCreateInfo queueInfo{};
queueInfo.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
queueInfo.queueFamilyIndex = queueFamilyIndices.transfer;
queueInfo.queueCount = 1;
queueInfo.pQueuePriorities = &defaultQueuePriority;
queueCreateInfos.push_back(queueInfo);
}
}
else
{
// Else we use the same queue
queueFamilyIndices.transfer = queueFamilyIndices.graphics;
}
// Create the logical device representation
std::vector<const char*> deviceExtensions(enabledExtensions);
if (useSwapChain)
{
// If the device will be used for presenting to a display via a swapchain we need to request the swapchain extension
deviceExtensions.push_back(VK_KHR_SWAPCHAIN_EXTENSION_NAME);
}
VkDeviceCreateInfo deviceCreateInfo = {};
deviceCreateInfo.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
deviceCreateInfo.queueCreateInfoCount = static_cast<uint32_t>(queueCreateInfos.size());;
deviceCreateInfo.pQueueCreateInfos = queueCreateInfos.data();
deviceCreateInfo.pEnabledFeatures = &enabledFeatures;
// If a pNext(Chain) has been passed, we need to add it to the device creation info
VkPhysicalDeviceFeatures2 physicalDeviceFeatures2{};
if (pNextChain) {
physicalDeviceFeatures2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
physicalDeviceFeatures2.features = enabledFeatures;
physicalDeviceFeatures2.pNext = pNextChain;
deviceCreateInfo.pEnabledFeatures = nullptr;
deviceCreateInfo.pNext = &physicalDeviceFeatures2;
}
// Enable the debug marker extension if it is present (likely meaning a debugging tool is present)
if (extensionSupported(VK_EXT_DEBUG_MARKER_EXTENSION_NAME))
{
deviceExtensions.push_back(VK_EXT_DEBUG_MARKER_EXTENSION_NAME);
enableDebugMarkers = true;
}
#if (defined(VK_USE_PLATFORM_IOS_MVK) || defined(VK_USE_PLATFORM_MACOS_MVK)) && defined(VK_KHR_portability_subset)
// SRS - When running on iOS/macOS with MoltenVK and VK_KHR_portability_subset is defined and supported by the device, enable the extension
if (extensionSupported(VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME))
{
deviceExtensions.push_back(VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME);
}
#endif
if (deviceExtensions.size() > 0)
{
for (const char* enabledExtension : deviceExtensions)
{
if (!extensionSupported(enabledExtension)) {
std::cerr << "Enabled device extension \"" << enabledExtension << "\" is not present at device level\n";
}
}
deviceCreateInfo.enabledExtensionCount = (uint32_t)deviceExtensions.size();
deviceCreateInfo.ppEnabledExtensionNames = deviceExtensions.data();
}
this->enabledFeatures = enabledFeatures;
VkResult result = vkCreateDevice(physicalDevice, &deviceCreateInfo, nullptr, &logicalDevice);
if (result != VK_SUCCESS)
{
return result;
}
// Create a default command pool for graphics command buffers
commandPool = createCommandPool(queueFamilyIndices.graphics);
return result;
}
/**
* Create a buffer on the device
*
* @param usageFlags Usage flag bit mask for the buffer (i.e. index, vertex, uniform buffer)
* @param memoryPropertyFlags Memory properties for this buffer (i.e. device local, host visible, coherent)
* @param size Size of the buffer in byes
* @param buffer Pointer to the buffer handle acquired by the function
* @param memory Pointer to the memory handle acquired by the function
* @param data Pointer to the data that should be copied to the buffer after creation (optional, if not set, no data is copied over)
*
* @return VK_SUCCESS if buffer handle and memory have been created and (optionally passed) data has been copied
*/
VkResult VulkanDevice::createBuffer(VkBufferUsageFlags usageFlags, VkMemoryPropertyFlags memoryPropertyFlags, VkDeviceSize size, VkBuffer *buffer, VkDeviceMemory *memory, void *data)
{
// Create the buffer handle
VkBufferCreateInfo bufferCreateInfo = vks::initializers::bufferCreateInfo(usageFlags, size);
bufferCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
VK_CHECK_RESULT(vkCreateBuffer(logicalDevice, &bufferCreateInfo, nullptr, buffer));
// Create the memory backing up the buffer handle
VkMemoryRequirements memReqs;
VkMemoryAllocateInfo memAlloc = vks::initializers::memoryAllocateInfo();
vkGetBufferMemoryRequirements(logicalDevice, *buffer, &memReqs);
memAlloc.allocationSize = memReqs.size;
// Find a memory type index that fits the properties of the buffer
memAlloc.memoryTypeIndex = getMemoryType(memReqs.memoryTypeBits, memoryPropertyFlags);
// If the buffer has VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT set we also need to enable the appropriate flag during allocation
VkMemoryAllocateFlagsInfoKHR allocFlagsInfo{};
if (usageFlags & VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT) {
allocFlagsInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR;
allocFlagsInfo.flags = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR;
memAlloc.pNext = &allocFlagsInfo;
}
VK_CHECK_RESULT(vkAllocateMemory(logicalDevice, &memAlloc, nullptr, memory));
// If a pointer to the buffer data has been passed, map the buffer and copy over the data
if (data != nullptr)
{
void *mapped;
VK_CHECK_RESULT(vkMapMemory(logicalDevice, *memory, 0, size, 0, &mapped));
memcpy(mapped, data, size);
// If host coherency hasn't been requested, do a manual flush to make writes visible
if ((memoryPropertyFlags & VK_MEMORY_PROPERTY_HOST_COHERENT_BIT) == 0)
{
VkMappedMemoryRange mappedRange = vks::initializers::mappedMemoryRange();
mappedRange.memory = *memory;
mappedRange.offset = 0;
mappedRange.size = size;
vkFlushMappedMemoryRanges(logicalDevice, 1, &mappedRange);
}
vkUnmapMemory(logicalDevice, *memory);
}
// Attach the memory to the buffer object
VK_CHECK_RESULT(vkBindBufferMemory(logicalDevice, *buffer, *memory, 0));
return VK_SUCCESS;
}
/**
* Create a buffer on the device
*
* @param usageFlags Usage flag bit mask for the buffer (i.e. index, vertex, uniform buffer)
* @param memoryPropertyFlags Memory properties for this buffer (i.e. device local, host visible, coherent)
* @param buffer Pointer to a vk::Vulkan buffer object
* @param size Size of the buffer in bytes
* @param data Pointer to the data that should be copied to the buffer after creation (optional, if not set, no data is copied over)
*
* @return VK_SUCCESS if buffer handle and memory have been created and (optionally passed) data has been copied
*/
VkResult VulkanDevice::createBuffer(VkBufferUsageFlags usageFlags, VkMemoryPropertyFlags memoryPropertyFlags, vks::Buffer *buffer, VkDeviceSize size, void *data)
{
buffer->device = logicalDevice;
// Create the buffer handle
VkBufferCreateInfo bufferCreateInfo = vks::initializers::bufferCreateInfo(usageFlags, size);
VK_CHECK_RESULT(vkCreateBuffer(logicalDevice, &bufferCreateInfo, nullptr, &buffer->buffer));
// Create the memory backing up the buffer handle
VkMemoryRequirements memReqs;
VkMemoryAllocateInfo memAlloc = vks::initializers::memoryAllocateInfo();
vkGetBufferMemoryRequirements(logicalDevice, buffer->buffer, &memReqs);
memAlloc.allocationSize = memReqs.size;
// Find a memory type index that fits the properties of the buffer
memAlloc.memoryTypeIndex = getMemoryType(memReqs.memoryTypeBits, memoryPropertyFlags);
// If the buffer has VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT set we also need to enable the appropriate flag during allocation
VkMemoryAllocateFlagsInfoKHR allocFlagsInfo{};
if (usageFlags & VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT) {
allocFlagsInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR;
allocFlagsInfo.flags = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR;
memAlloc.pNext = &allocFlagsInfo;
}
VK_CHECK_RESULT(vkAllocateMemory(logicalDevice, &memAlloc, nullptr, &buffer->memory));
buffer->alignment = memReqs.alignment;
buffer->size = size;
buffer->usageFlags = usageFlags;
buffer->memoryPropertyFlags = memoryPropertyFlags;
// If a pointer to the buffer data has been passed, map the buffer and copy over the data
if (data != nullptr)
{
VK_CHECK_RESULT(buffer->map());
memcpy(buffer->mapped, data, size);
if ((memoryPropertyFlags & VK_MEMORY_PROPERTY_HOST_COHERENT_BIT) == 0)
buffer->flush();
buffer->unmap();
}
// Initialize a default descriptor that covers the whole buffer size
buffer->setupDescriptor();
// Attach the memory to the buffer object
return buffer->bind();
}
/**
* Copy buffer data from src to dst using VkCmdCopyBuffer
*
* @param src Pointer to the source buffer to copy from
* @param dst Pointer to the destination buffer to copy to
* @param queue Pointer
* @param copyRegion (Optional) Pointer to a copy region, if NULL, the whole buffer is copied
*
* @note Source and destination pointers must have the appropriate transfer usage flags set (TRANSFER_SRC / TRANSFER_DST)
*/
void VulkanDevice::copyBuffer(vks::Buffer *src, vks::Buffer *dst, VkQueue queue, VkBufferCopy *copyRegion)
{
assert(dst->size <= src->size);
assert(src->buffer);
VkCommandBuffer copyCmd = createCommandBuffer(VK_COMMAND_BUFFER_LEVEL_PRIMARY, true);
VkBufferCopy bufferCopy{};
if (copyRegion == nullptr)
{
bufferCopy.size = src->size;
}
else
{
bufferCopy = *copyRegion;
}
vkCmdCopyBuffer(copyCmd, src->buffer, dst->buffer, 1, &bufferCopy);
flushCommandBuffer(copyCmd, queue);
}
/**
* Create a command pool for allocation command buffers from
*
* @param queueFamilyIndex Family index of the queue to create the command pool for
* @param createFlags (Optional) Command pool creation flags (Defaults to VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT)
*
* @note Command buffers allocated from the created pool can only be submitted to a queue with the same family index
*
* @return A handle to the created command buffer
*/
VkCommandPool VulkanDevice::createCommandPool(uint32_t queueFamilyIndex, VkCommandPoolCreateFlags createFlags)
{
VkCommandPoolCreateInfo cmdPoolInfo = {};
cmdPoolInfo.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO;
cmdPoolInfo.queueFamilyIndex = queueFamilyIndex;
cmdPoolInfo.flags = createFlags;
VkCommandPool cmdPool;
VK_CHECK_RESULT(vkCreateCommandPool(logicalDevice, &cmdPoolInfo, nullptr, &cmdPool));
return cmdPool;
}
/**
* Allocate a command buffer from the command pool
*
* @param level Level of the new command buffer (primary or secondary)
* @param pool Command pool from which the command buffer will be allocated
* @param (Optional) begin If true, recording on the new command buffer will be started (vkBeginCommandBuffer) (Defaults to false)
*
* @return A handle to the allocated command buffer
*/
VkCommandBuffer VulkanDevice::createCommandBuffer(VkCommandBufferLevel level, VkCommandPool pool, bool begin)
{
VkCommandBufferAllocateInfo cmdBufAllocateInfo = vks::initializers::commandBufferAllocateInfo(pool, level, 1);
VkCommandBuffer cmdBuffer;
VK_CHECK_RESULT(vkAllocateCommandBuffers(logicalDevice, &cmdBufAllocateInfo, &cmdBuffer));
// If requested, also start recording for the new command buffer
if (begin)
{
VkCommandBufferBeginInfo cmdBufInfo = vks::initializers::commandBufferBeginInfo();
VK_CHECK_RESULT(vkBeginCommandBuffer(cmdBuffer, &cmdBufInfo));
}
return cmdBuffer;
}
VkCommandBuffer VulkanDevice::createCommandBuffer(VkCommandBufferLevel level, bool begin)
{
return createCommandBuffer(level, commandPool, begin);
}
/**
* Finish command buffer recording and submit it to a queue
*
* @param commandBuffer Command buffer to flush
* @param queue Queue to submit the command buffer to
* @param pool Command pool on which the command buffer has been created
* @param free (Optional) Free the command buffer once it has been submitted (Defaults to true)
*
* @note The queue that the command buffer is submitted to must be from the same family index as the pool it was allocated from
* @note Uses a fence to ensure command buffer has finished executing
*/
void VulkanDevice::flushCommandBuffer(VkCommandBuffer commandBuffer, VkQueue queue, VkCommandPool pool, bool free)
{
if (commandBuffer == VK_NULL_HANDLE)
{
return;
}
VK_CHECK_RESULT(vkEndCommandBuffer(commandBuffer));
VkSubmitInfo submitInfo = vks::initializers::submitInfo();
submitInfo.commandBufferCount = 1;
submitInfo.pCommandBuffers = &commandBuffer;
// Create fence to ensure that the command buffer has finished executing
VkFenceCreateInfo fenceInfo = vks::initializers::fenceCreateInfo(VK_FLAGS_NONE);
VkFence fence;
VK_CHECK_RESULT(vkCreateFence(logicalDevice, &fenceInfo, nullptr, &fence));
// Submit to the queue
VK_CHECK_RESULT(vkQueueSubmit(queue, 1, &submitInfo, fence));
// Wait for the fence to signal that command buffer has finished executing
VK_CHECK_RESULT(vkWaitForFences(logicalDevice, 1, &fence, VK_TRUE, DEFAULT_FENCE_TIMEOUT));
vkDestroyFence(logicalDevice, fence, nullptr);
if (free)
{
vkFreeCommandBuffers(logicalDevice, pool, 1, &commandBuffer);
}
}
void VulkanDevice::flushCommandBuffer(VkCommandBuffer commandBuffer, VkQueue queue, bool free)
{
return flushCommandBuffer(commandBuffer, queue, commandPool, free);
}
/**
* Check if an extension is supported by the (physical device)
*
* @param extension Name of the extension to check
*
* @return True if the extension is supported (present in the list read at device creation time)
*/
bool VulkanDevice::extensionSupported(std::string extension)
{
return (std::find(supportedExtensions.begin(), supportedExtensions.end(), extension) != supportedExtensions.end());
}
/**
* Select the best-fit depth format for this device from a list of possible depth (and stencil) formats
*
* @param checkSamplingSupport Check if the format can be sampled from (e.g. for shader reads)
*
* @return The depth format that best fits for the current device
*
* @throw Throws an exception if no depth format fits the requirements
*/
VkFormat VulkanDevice::getSupportedDepthFormat(bool checkSamplingSupport)
{
// All depth formats may be optional, so we need to find a suitable depth format to use
std::vector<VkFormat> depthFormats = { VK_FORMAT_D32_SFLOAT_S8_UINT, VK_FORMAT_D32_SFLOAT, VK_FORMAT_D24_UNORM_S8_UINT, VK_FORMAT_D16_UNORM_S8_UINT, VK_FORMAT_D16_UNORM };
for (auto& format : depthFormats)
{
VkFormatProperties formatProperties;
vkGetPhysicalDeviceFormatProperties(physicalDevice, format, &formatProperties);
// Format must support depth stencil attachment for optimal tiling
if (formatProperties.optimalTilingFeatures & VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT)
{
if (checkSamplingSupport) {
if (!(formatProperties.optimalTilingFeatures & VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT)) {
continue;
}
}
return format;
}
}
throw std::runtime_error("Could not find a matching depth format");
}
};

View File

@ -0,0 +1,71 @@
/*
* Vulkan device class
*
* Encapsulates a physical Vulkan device and its logical representation
*
* Copyright (C) by Sascha Willems - www.saschawillems.de
*
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
*/
#pragma once
#include "VulkanBuffer.h"
#include "VulkanTools.h"
#include "vulkan/vulkan.h"
#include <algorithm>
#include <assert.h>
#include <exception>
namespace vks
{
struct VulkanDevice
{
/** @brief Physical device representation */
VkPhysicalDevice physicalDevice;
/** @brief Logical device representation (application's view of the device) */
VkDevice logicalDevice;
/** @brief Properties of the physical device including limits that the application can check against */
VkPhysicalDeviceProperties properties;
/** @brief Features of the physical device that an application can use to check if a feature is supported */
VkPhysicalDeviceFeatures features;
/** @brief Features that have been enabled for use on the physical device */
VkPhysicalDeviceFeatures enabledFeatures;
/** @brief Memory types and heaps of the physical device */
VkPhysicalDeviceMemoryProperties memoryProperties;
/** @brief Queue family properties of the physical device */
std::vector<VkQueueFamilyProperties> queueFamilyProperties;
/** @brief List of extensions supported by the device */
std::vector<std::string> supportedExtensions;
/** @brief Default command pool for the graphics queue family index */
VkCommandPool commandPool = VK_NULL_HANDLE;
/** @brief Set to true when the debug marker extension is detected */
bool enableDebugMarkers = false;
/** @brief Contains queue family indices */
struct
{
uint32_t graphics;
uint32_t compute;
uint32_t transfer;
} queueFamilyIndices;
operator VkDevice() const
{
return logicalDevice;
};
explicit VulkanDevice(VkPhysicalDevice physicalDevice);
~VulkanDevice();
uint32_t getMemoryType(uint32_t typeBits, VkMemoryPropertyFlags properties, VkBool32 *memTypeFound = nullptr) const;
uint32_t getQueueFamilyIndex(VkQueueFlags queueFlags) const;
VkResult createLogicalDevice(VkPhysicalDeviceFeatures enabledFeatures, std::vector<const char *> enabledExtensions, void *pNextChain, bool useSwapChain = true, VkQueueFlags requestedQueueTypes = VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT);
VkResult createBuffer(VkBufferUsageFlags usageFlags, VkMemoryPropertyFlags memoryPropertyFlags, VkDeviceSize size, VkBuffer *buffer, VkDeviceMemory *memory, void *data = nullptr);
VkResult createBuffer(VkBufferUsageFlags usageFlags, VkMemoryPropertyFlags memoryPropertyFlags, vks::Buffer *buffer, VkDeviceSize size, void *data = nullptr);
void copyBuffer(vks::Buffer *src, vks::Buffer *dst, VkQueue queue, VkBufferCopy *copyRegion = nullptr);
VkCommandPool createCommandPool(uint32_t queueFamilyIndex, VkCommandPoolCreateFlags createFlags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT);
VkCommandBuffer createCommandBuffer(VkCommandBufferLevel level, VkCommandPool pool, bool begin = false);
VkCommandBuffer createCommandBuffer(VkCommandBufferLevel level, bool begin = false);
void flushCommandBuffer(VkCommandBuffer commandBuffer, VkQueue queue, VkCommandPool pool, bool free = true);
void flushCommandBuffer(VkCommandBuffer commandBuffer, VkQueue queue, bool free = true);
bool extensionSupported(std::string extension);
VkFormat getSupportedDepthFormat(bool checkSamplingSupport);
};
} // namespace vks

View File

@ -1,389 +0,0 @@
/*
* Vulkan device class
*
* Encapsulates a physical Vulkan device and it's logical representation
*
* Copyright (C) 2016-2018 by Sascha Willems - www.saschawillems.de
*
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
*/
#pragma once
#include <cstdio>
#include <exception>
#include <assert.h>
#include <algorithm>
#include <cstring>
#include <vector>
#include "vulkan/vulkan.h"
#if defined(VK_USE_PLATFORM_MACOS_MVK) && (VK_HEADER_VERSION >= 216)
#include <vulkan/vulkan_beta.h>
#endif
#if defined(VK_USE_PLATFORM_ANDROID_KHR)
#include "VulkanAndroid.h"
#endif
#include "VulkanTools.h"
namespace vks
{
struct VulkanDevice
{
VkPhysicalDevice physicalDevice;
VkDevice logicalDevice;
VkPhysicalDeviceProperties properties;
VkPhysicalDeviceFeatures features;
VkPhysicalDeviceFeatures enabledFeatures;
VkPhysicalDeviceMemoryProperties memoryProperties;
std::vector<VkQueueFamilyProperties> queueFamilyProperties;
VkCommandPool commandPool = VK_NULL_HANDLE;
struct {
uint32_t graphics;
uint32_t compute;
} queueFamilyIndices;
operator VkDevice() { return logicalDevice; };
/**
* Default constructor
*
* @param physicalDevice Physical device that is to be used
*/
VulkanDevice(VkPhysicalDevice physicalDevice)
{
assert(physicalDevice);
this->physicalDevice = physicalDevice;
// Store Properties features, limits and properties of the physical device for later use
// Device properties also contain limits and sparse properties
vkGetPhysicalDeviceProperties(physicalDevice, &properties);
// Features should be checked by the examples before using them
vkGetPhysicalDeviceFeatures(physicalDevice, &features);
// Memory properties are used regularly for creating all kinds of buffers
vkGetPhysicalDeviceMemoryProperties(physicalDevice, &memoryProperties);
// Queue family properties, used for setting up requested queues upon device creation
uint32_t queueFamilyCount;
vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, &queueFamilyCount, nullptr);
assert(queueFamilyCount > 0);
queueFamilyProperties.resize(queueFamilyCount);
vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, &queueFamilyCount, queueFamilyProperties.data());
}
/**
* Default destructor
*
* @note Frees the logical device
*/
~VulkanDevice()
{
if (commandPool) {
vkDestroyCommandPool(logicalDevice, commandPool, nullptr);
}
if (logicalDevice) {
vkDestroyDevice(logicalDevice, nullptr);
}
}
/**
* Get the index of a memory type that has all the requested property bits set
*
* @param typeBits Bitmask with bits set for each memory type supported by the resource to request for (from VkMemoryRequirements)
* @param properties Bitmask of properties for the memory type to request
* @param (Optional) memTypeFound Pointer to a bool that is set to true if a matching memory type has been found
*
* @return Index of the requested memory type
*
* @throw Throws an exception if memTypeFound is null and no memory type could be found that supports the requested properties
*/
uint32_t getMemoryType(uint32_t typeBits, VkMemoryPropertyFlags properties, VkBool32 *memTypeFound = nullptr)
{
for (uint32_t i = 0; i < memoryProperties.memoryTypeCount; i++) {
if ((typeBits & 1) == 1) {
if ((memoryProperties.memoryTypes[i].propertyFlags & properties) == properties) {
if (memTypeFound) {
*memTypeFound = true;
}
return i;
}
}
typeBits >>= 1;
}
if (memTypeFound) {
*memTypeFound = false;
return 0;
} else {
throw std::runtime_error("Could not find a matching memory type");
}
}
/**
* Get the index of a queue family that supports the requested queue flags
*
* @param queueFlags Queue flags to find a queue family index for
*
* @return Index of the queue family index that matches the flags
*
* @throw Throws an exception if no queue family index could be found that supports the requested flags
*/
uint32_t getQueueFamilyIndex(VkQueueFlagBits queueFlags)
{
// Dedicated queue for compute
// Try to find a queue family index that supports compute but not graphics
if (queueFlags & VK_QUEUE_COMPUTE_BIT)
{
for (uint32_t i = 0; i < static_cast<uint32_t>(queueFamilyProperties.size()); i++) {
if ((queueFamilyProperties[i].queueFlags & queueFlags) && ((queueFamilyProperties[i].queueFlags & VK_QUEUE_GRAPHICS_BIT) == 0)) {
return i;
break;
}
}
}
// For other queue types or if no separate compute queue is present, return the first one to support the requested flags
for (uint32_t i = 0; i < static_cast<uint32_t>(queueFamilyProperties.size()); i++) {
if (queueFamilyProperties[i].queueFlags & queueFlags) {
return i;
break;
}
}
throw std::runtime_error("Could not find a matching queue family index");
}
/**
* Create the logical device based on the assigned physical device, also gets default queue family indices
*
* @param enabledFeatures Can be used to enable certain features upon device creation
* @param requestedQueueTypes Bit flags specifying the queue types to be requested from the device
*
* @return VkResult of the device creation call
*/
VkResult createLogicalDevice(VkPhysicalDeviceFeatures enabledFeatures, std::vector<const char*> enabledExtensions, VkQueueFlags requestedQueueTypes = VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT)
{
// Desired queues need to be requested upon logical device creation
// Due to differing queue family configurations of Vulkan implementations this can be a bit tricky, especially if the application
// requests different queue types
std::vector<VkDeviceQueueCreateInfo> queueCreateInfos{};
// Get queue family indices for the requested queue family types
// Note that the indices may overlap depending on the implementation
const float defaultQueuePriority(0.0f);
// Graphics queue
if (requestedQueueTypes & VK_QUEUE_GRAPHICS_BIT) {
queueFamilyIndices.graphics = getQueueFamilyIndex(VK_QUEUE_GRAPHICS_BIT);
VkDeviceQueueCreateInfo queueInfo{};
queueInfo.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
queueInfo.queueFamilyIndex = queueFamilyIndices.graphics;
queueInfo.queueCount = 1;
queueInfo.pQueuePriorities = &defaultQueuePriority;
queueCreateInfos.push_back(queueInfo);
} else {
queueFamilyIndices.graphics = 0;
}
// Dedicated compute queue
if (requestedQueueTypes & VK_QUEUE_COMPUTE_BIT) {
queueFamilyIndices.compute = getQueueFamilyIndex(VK_QUEUE_COMPUTE_BIT);
if (queueFamilyIndices.compute != queueFamilyIndices.graphics) {
// If compute family index differs, we need an additional queue create info for the compute queue
VkDeviceQueueCreateInfo queueInfo{};
queueInfo.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
queueInfo.queueFamilyIndex = queueFamilyIndices.compute;
queueInfo.queueCount = 1;
queueInfo.pQueuePriorities = &defaultQueuePriority;
queueCreateInfos.push_back(queueInfo);
}
} else {
// Else we use the same queue
queueFamilyIndices.compute = queueFamilyIndices.graphics;
}
// Create the logical device representation
std::vector<const char*> deviceExtensions(enabledExtensions);
deviceExtensions.push_back(VK_KHR_SWAPCHAIN_EXTENSION_NAME);
#if defined(VK_USE_PLATFORM_MACOS_MVK) && (VK_HEADER_VERSION >= 216)
deviceExtensions.push_back(VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME);
#endif
VkDeviceCreateInfo deviceCreateInfo = {};
deviceCreateInfo.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
deviceCreateInfo.queueCreateInfoCount = static_cast<uint32_t>(queueCreateInfos.size());;
deviceCreateInfo.pQueueCreateInfos = queueCreateInfos.data();
deviceCreateInfo.pEnabledFeatures = &enabledFeatures;
if (deviceExtensions.size() > 0) {
deviceCreateInfo.enabledExtensionCount = (uint32_t)deviceExtensions.size();
deviceCreateInfo.ppEnabledExtensionNames = deviceExtensions.data();
}
VkResult result = vkCreateDevice(physicalDevice, &deviceCreateInfo, nullptr, &logicalDevice);
if (result == VK_SUCCESS) {
commandPool = createCommandPool(queueFamilyIndices.graphics);
}
this->enabledFeatures = enabledFeatures;
return result;
}
/**
* Create a buffer on the device
*
* @param usageFlags Usage flag bitmask for the buffer (i.e. index, vertex, uniform buffer)
* @param memoryPropertyFlags Memory properties for this buffer (i.e. device local, host visible, coherent)
* @param size Size of the buffer in byes
* @param buffer Pointer to the buffer handle acquired by the function
* @param memory Pointer to the memory handle acquired by the function
* @param data Pointer to the data that should be copied to the buffer after creation (optional, if not set, no data is copied over)
*
* @return VK_SUCCESS if buffer handle and memory have been created and (optionally passed) data has been copied
*/
VkResult createBuffer(VkBufferUsageFlags usageFlags, VkMemoryPropertyFlags memoryPropertyFlags, VkDeviceSize size, VkBuffer *buffer, VkDeviceMemory *memory, void *data = nullptr)
{
// Create the buffer handle
VkBufferCreateInfo bufferCreateInfo{};
bufferCreateInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
bufferCreateInfo.usage = usageFlags;
bufferCreateInfo.size = size;
bufferCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
VK_CHECK_RESULT(vkCreateBuffer(logicalDevice, &bufferCreateInfo, nullptr, buffer));
// Create the memory backing up the buffer handle
VkMemoryRequirements memReqs;
VkMemoryAllocateInfo memAlloc{};
memAlloc.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;
vkGetBufferMemoryRequirements(logicalDevice, *buffer, &memReqs);
memAlloc.allocationSize = memReqs.size;
// Find a memory type index that fits the properties of the buffer
memAlloc.memoryTypeIndex = getMemoryType(memReqs.memoryTypeBits, memoryPropertyFlags);
VK_CHECK_RESULT(vkAllocateMemory(logicalDevice, &memAlloc, nullptr, memory));
// If a pointer to the buffer data has been passed, map the buffer and copy over the data
if (data != nullptr)
{
void *mapped;
VK_CHECK_RESULT(vkMapMemory(logicalDevice, *memory, 0, size, 0, &mapped));
memcpy(mapped, data, size);
// If host coherency hasn't been requested, do a manual flush to make writes visible
if ((memoryPropertyFlags & VK_MEMORY_PROPERTY_HOST_COHERENT_BIT) == 0)
{
VkMappedMemoryRange mappedRange{};
mappedRange.sType = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE;
mappedRange.memory = *memory;
mappedRange.offset = 0;
mappedRange.size = size;
vkFlushMappedMemoryRanges(logicalDevice, 1, &mappedRange);
}
vkUnmapMemory(logicalDevice, *memory);
}
// Attach the memory to the buffer object
VK_CHECK_RESULT(vkBindBufferMemory(logicalDevice, *buffer, *memory, 0));
return VK_SUCCESS;
}
/**
* Create a command pool for allocation command buffers from
*
* @param queueFamilyIndex Family index of the queue to create the command pool for
* @param createFlags (Optional) Command pool creation flags (Defaults to VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT)
*
* @note Command buffers allocated from the created pool can only be submitted to a queue with the same family index
*
* @return A handle to the created command buffer
*/
VkCommandPool createCommandPool(uint32_t queueFamilyIndex, VkCommandPoolCreateFlags createFlags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT)
{
VkCommandPoolCreateInfo cmdPoolInfo = {};
cmdPoolInfo.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO;
cmdPoolInfo.queueFamilyIndex = queueFamilyIndex;
cmdPoolInfo.flags = createFlags;
VkCommandPool cmdPool;
VK_CHECK_RESULT(vkCreateCommandPool(logicalDevice, &cmdPoolInfo, nullptr, &cmdPool));
return cmdPool;
}
/**
* Allocate a command buffer from the command pool
*
* @param level Level of the new command buffer (primary or secondary)
* @param (Optional) begin If true, recording on the new command buffer will be started (vkBeginCommandBuffer) (Defaults to false)
*
* @return A handle to the allocated command buffer
*/
VkCommandBuffer createCommandBuffer(VkCommandBufferLevel level, bool begin = false)
{
VkCommandBufferAllocateInfo cmdBufAllocateInfo{};
cmdBufAllocateInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
cmdBufAllocateInfo.commandPool = commandPool;
cmdBufAllocateInfo.level = level;
cmdBufAllocateInfo.commandBufferCount = 1;
VkCommandBuffer cmdBuffer;
VK_CHECK_RESULT(vkAllocateCommandBuffers(logicalDevice, &cmdBufAllocateInfo, &cmdBuffer));
// If requested, also start recording for the new command buffer
if (begin) {
VkCommandBufferBeginInfo commandBufferBI{};
commandBufferBI.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
VK_CHECK_RESULT(vkBeginCommandBuffer(cmdBuffer, &commandBufferBI));
}
return cmdBuffer;
}
void beginCommandBuffer(VkCommandBuffer commandBuffer)
{
VkCommandBufferBeginInfo commandBufferBI{};
commandBufferBI.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
VK_CHECK_RESULT(vkBeginCommandBuffer(commandBuffer, &commandBufferBI));
}
/**
* Finish command buffer recording and submit it to a queue
*
* @param commandBuffer Command buffer to flush
* @param queue Queue to submit the command buffer to
* @param free (Optional) Free the command buffer once it has been submitted (Defaults to true)
*
* @note The queue that the command buffer is submitted to must be from the same family index as the pool it was allocated from
* @note Uses a fence to ensure command buffer has finished executing
*/
void flushCommandBuffer(VkCommandBuffer commandBuffer, VkQueue queue, bool free = true)
{
VK_CHECK_RESULT(vkEndCommandBuffer(commandBuffer));
VkSubmitInfo submitInfo{};
submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
submitInfo.commandBufferCount = 1;
submitInfo.pCommandBuffers = &commandBuffer;
// Create fence to ensure that the command buffer has finished executing
VkFenceCreateInfo fenceInfo{};
fenceInfo.sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO;
VkFence fence;
VK_CHECK_RESULT(vkCreateFence(logicalDevice, &fenceInfo, nullptr, &fence));
// Submit to the queue
VK_CHECK_RESULT(vkQueueSubmit(queue, 1, &submitInfo, fence));
// Wait for the fence to signal that command buffer has finished executing
VK_CHECK_RESULT(vkWaitForFences(logicalDevice, 1, &fence, VK_TRUE, 100000000000));
vkDestroyFence(logicalDevice, fence, nullptr);
if (free) {
vkFreeCommandBuffers(logicalDevice, commandPool, 1, &commandBuffer);
}
}
};
}

View File

@ -0,0 +1,366 @@
/*
* Vulkan framebuffer class
*
* Copyright (C) 2016 by Sascha Willems - www.saschawillems.de
*
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
*/
#pragma once
#include <algorithm>
#include <iterator>
#include <vector>
#include "vulkan/vulkan.h"
#include "VulkanDevice.h"
#include "VulkanTools.h"
namespace vks
{
/**
* @brief Encapsulates a single frame buffer attachment
*/
struct FramebufferAttachment
{
VkImage image;
VkDeviceMemory memory;
VkImageView view;
VkFormat format;
VkImageSubresourceRange subresourceRange;
VkAttachmentDescription description;
/**
* @brief Returns true if the attachment has a depth component
*/
bool hasDepth()
{
std::vector<VkFormat> formats =
{
VK_FORMAT_D16_UNORM,
VK_FORMAT_X8_D24_UNORM_PACK32,
VK_FORMAT_D32_SFLOAT,
VK_FORMAT_D16_UNORM_S8_UINT,
VK_FORMAT_D24_UNORM_S8_UINT,
VK_FORMAT_D32_SFLOAT_S8_UINT,
};
return std::find(formats.begin(), formats.end(), format) != std::end(formats);
}
/**
* @brief Returns true if the attachment has a stencil component
*/
bool hasStencil()
{
std::vector<VkFormat> formats =
{
VK_FORMAT_S8_UINT,
VK_FORMAT_D16_UNORM_S8_UINT,
VK_FORMAT_D24_UNORM_S8_UINT,
VK_FORMAT_D32_SFLOAT_S8_UINT,
};
return std::find(formats.begin(), formats.end(), format) != std::end(formats);
}
/**
* @brief Returns true if the attachment is a depth and/or stencil attachment
*/
bool isDepthStencil()
{
return(hasDepth() || hasStencil());
}
};
/**
* @brief Describes the attributes of an attachment to be created
*/
struct AttachmentCreateInfo
{
uint32_t width, height;
uint32_t layerCount;
VkFormat format;
VkImageUsageFlags usage;
VkSampleCountFlagBits imageSampleCount = VK_SAMPLE_COUNT_1_BIT;
};
/**
* @brief Encapsulates a complete Vulkan framebuffer with an arbitrary number and combination of attachments
*/
struct Framebuffer
{
private:
vks::VulkanDevice *vulkanDevice;
public:
uint32_t width, height;
VkFramebuffer framebuffer;
VkRenderPass renderPass;
VkSampler sampler;
std::vector<vks::FramebufferAttachment> attachments;
/**
* Default constructor
*
* @param vulkanDevice Pointer to a valid VulkanDevice
*/
Framebuffer(vks::VulkanDevice *vulkanDevice)
{
assert(vulkanDevice);
this->vulkanDevice = vulkanDevice;
}
/**
* Destroy and free Vulkan resources used for the framebuffer and all of its attachments
*/
~Framebuffer()
{
assert(vulkanDevice);
for (auto attachment : attachments)
{
vkDestroyImage(vulkanDevice->logicalDevice, attachment.image, nullptr);
vkDestroyImageView(vulkanDevice->logicalDevice, attachment.view, nullptr);
vkFreeMemory(vulkanDevice->logicalDevice, attachment.memory, nullptr);
}
vkDestroySampler(vulkanDevice->logicalDevice, sampler, nullptr);
vkDestroyRenderPass(vulkanDevice->logicalDevice, renderPass, nullptr);
vkDestroyFramebuffer(vulkanDevice->logicalDevice, framebuffer, nullptr);
}
/**
* Add a new attachment described by createinfo to the framebuffer's attachment list
*
* @param createinfo Structure that specifies the framebuffer to be constructed
*
* @return Index of the new attachment
*/
uint32_t addAttachment(vks::AttachmentCreateInfo createinfo)
{
vks::FramebufferAttachment attachment;
attachment.format = createinfo.format;
VkImageAspectFlags aspectMask = VK_FLAGS_NONE;
// Select aspect mask and layout depending on usage
// Color attachment
if (createinfo.usage & VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT)
{
aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
}
// Depth (and/or stencil) attachment
if (createinfo.usage & VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT)
{
if (attachment.hasDepth())
{
aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT;
}
if (attachment.hasStencil())
{
aspectMask = aspectMask | VK_IMAGE_ASPECT_STENCIL_BIT;
}
}
assert(aspectMask > 0);
VkImageCreateInfo image = vks::initializers::imageCreateInfo();
image.imageType = VK_IMAGE_TYPE_2D;
image.format = createinfo.format;
image.extent.width = createinfo.width;
image.extent.height = createinfo.height;
image.extent.depth = 1;
image.mipLevels = 1;
image.arrayLayers = createinfo.layerCount;
image.samples = createinfo.imageSampleCount;
image.tiling = VK_IMAGE_TILING_OPTIMAL;
image.usage = createinfo.usage;
VkMemoryAllocateInfo memAlloc = vks::initializers::memoryAllocateInfo();
VkMemoryRequirements memReqs;
// Create image for this attachment
VK_CHECK_RESULT(vkCreateImage(vulkanDevice->logicalDevice, &image, nullptr, &attachment.image));
vkGetImageMemoryRequirements(vulkanDevice->logicalDevice, attachment.image, &memReqs);
memAlloc.allocationSize = memReqs.size;
memAlloc.memoryTypeIndex = vulkanDevice->getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT);
VK_CHECK_RESULT(vkAllocateMemory(vulkanDevice->logicalDevice, &memAlloc, nullptr, &attachment.memory));
VK_CHECK_RESULT(vkBindImageMemory(vulkanDevice->logicalDevice, attachment.image, attachment.memory, 0));
attachment.subresourceRange = {};
attachment.subresourceRange.aspectMask = aspectMask;
attachment.subresourceRange.levelCount = 1;
attachment.subresourceRange.layerCount = createinfo.layerCount;
VkImageViewCreateInfo imageView = vks::initializers::imageViewCreateInfo();
imageView.viewType = (createinfo.layerCount == 1) ? VK_IMAGE_VIEW_TYPE_2D : VK_IMAGE_VIEW_TYPE_2D_ARRAY;
imageView.format = createinfo.format;
imageView.subresourceRange = attachment.subresourceRange;
//todo: workaround for depth+stencil attachments
imageView.subresourceRange.aspectMask = (attachment.hasDepth()) ? VK_IMAGE_ASPECT_DEPTH_BIT : aspectMask;
imageView.image = attachment.image;
VK_CHECK_RESULT(vkCreateImageView(vulkanDevice->logicalDevice, &imageView, nullptr, &attachment.view));
// Fill attachment description
attachment.description = {};
attachment.description.samples = createinfo.imageSampleCount;
attachment.description.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
attachment.description.storeOp = (createinfo.usage & VK_IMAGE_USAGE_SAMPLED_BIT) ? VK_ATTACHMENT_STORE_OP_STORE : VK_ATTACHMENT_STORE_OP_DONT_CARE;
attachment.description.stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
attachment.description.stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
attachment.description.format = createinfo.format;
attachment.description.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
// Final layout
// If not, final layout depends on attachment type
if (attachment.hasDepth() || attachment.hasStencil())
{
attachment.description.finalLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL;
}
else
{
attachment.description.finalLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
}
attachments.push_back(attachment);
return static_cast<uint32_t>(attachments.size() - 1);
}
/**
* Creates a default sampler for sampling from any of the framebuffer attachments
* Applications are free to create their own samplers for different use cases
*
* @param magFilter Magnification filter for lookups
* @param minFilter Minification filter for lookups
* @param adressMode Addressing mode for the U,V and W coordinates
*
* @return VkResult for the sampler creation
*/
VkResult createSampler(VkFilter magFilter, VkFilter minFilter, VkSamplerAddressMode adressMode)
{
VkSamplerCreateInfo samplerInfo = vks::initializers::samplerCreateInfo();
samplerInfo.magFilter = magFilter;
samplerInfo.minFilter = minFilter;
samplerInfo.mipmapMode = VK_SAMPLER_MIPMAP_MODE_LINEAR;
samplerInfo.addressModeU = adressMode;
samplerInfo.addressModeV = adressMode;
samplerInfo.addressModeW = adressMode;
samplerInfo.mipLodBias = 0.0f;
samplerInfo.maxAnisotropy = 1.0f;
samplerInfo.minLod = 0.0f;
samplerInfo.maxLod = 1.0f;
samplerInfo.borderColor = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE;
return vkCreateSampler(vulkanDevice->logicalDevice, &samplerInfo, nullptr, &sampler);
}
/**
* Creates a default render pass setup with one sub pass
*
* @return VK_SUCCESS if all resources have been created successfully
*/
VkResult createRenderPass()
{
std::vector<VkAttachmentDescription> attachmentDescriptions;
for (auto& attachment : attachments)
{
attachmentDescriptions.push_back(attachment.description);
};
// Collect attachment references
std::vector<VkAttachmentReference> colorReferences;
VkAttachmentReference depthReference = {};
bool hasDepth = false;
bool hasColor = false;
uint32_t attachmentIndex = 0;
for (auto& attachment : attachments)
{
if (attachment.isDepthStencil())
{
// Only one depth attachment allowed
assert(!hasDepth);
depthReference.attachment = attachmentIndex;
depthReference.layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
hasDepth = true;
}
else
{
colorReferences.push_back({ attachmentIndex, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL });
hasColor = true;
}
attachmentIndex++;
};
// Default render pass setup uses only one subpass
VkSubpassDescription subpass = {};
subpass.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS;
if (hasColor)
{
subpass.pColorAttachments = colorReferences.data();
subpass.colorAttachmentCount = static_cast<uint32_t>(colorReferences.size());
}
if (hasDepth)
{
subpass.pDepthStencilAttachment = &depthReference;
}
// Use subpass dependencies for attachment layout transitions
std::array<VkSubpassDependency, 2> dependencies;
dependencies[0].srcSubpass = VK_SUBPASS_EXTERNAL;
dependencies[0].dstSubpass = 0;
dependencies[0].srcStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT;
dependencies[0].dstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
dependencies[0].srcAccessMask = VK_ACCESS_MEMORY_READ_BIT;
dependencies[0].dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
dependencies[0].dependencyFlags = VK_DEPENDENCY_BY_REGION_BIT;
dependencies[1].srcSubpass = 0;
dependencies[1].dstSubpass = VK_SUBPASS_EXTERNAL;
dependencies[1].srcStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
dependencies[1].dstStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT;
dependencies[1].srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
dependencies[1].dstAccessMask = VK_ACCESS_MEMORY_READ_BIT;
dependencies[1].dependencyFlags = VK_DEPENDENCY_BY_REGION_BIT;
// Create render pass
VkRenderPassCreateInfo renderPassInfo = {};
renderPassInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO;
renderPassInfo.pAttachments = attachmentDescriptions.data();
renderPassInfo.attachmentCount = static_cast<uint32_t>(attachmentDescriptions.size());
renderPassInfo.subpassCount = 1;
renderPassInfo.pSubpasses = &subpass;
renderPassInfo.dependencyCount = 2;
renderPassInfo.pDependencies = dependencies.data();
VK_CHECK_RESULT(vkCreateRenderPass(vulkanDevice->logicalDevice, &renderPassInfo, nullptr, &renderPass));
std::vector<VkImageView> attachmentViews;
for (auto attachment : attachments)
{
attachmentViews.push_back(attachment.view);
}
// Find. max number of layers across attachments
uint32_t maxLayers = 0;
for (auto attachment : attachments)
{
if (attachment.subresourceRange.layerCount > maxLayers)
{
maxLayers = attachment.subresourceRange.layerCount;
}
}
VkFramebufferCreateInfo framebufferInfo = {};
framebufferInfo.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO;
framebufferInfo.renderPass = renderPass;
framebufferInfo.pAttachments = attachmentViews.data();
framebufferInfo.attachmentCount = static_cast<uint32_t>(attachmentViews.size());
framebufferInfo.width = width;
framebufferInfo.height = height;
framebufferInfo.layers = maxLayers;
VK_CHECK_RESULT(vkCreateFramebuffer(vulkanDevice->logicalDevice, &framebufferInfo, nullptr, &framebuffer));
return VK_SUCCESS;
}
};
}

View File

@ -0,0 +1,259 @@
/*
* Heightmap terrain generator
*
* Copyright (C) by Sascha Willems - www.saschawillems.de
*
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
*/
#include <glm/glm.hpp>
#include <glm/glm.hpp>
#include "vulkan/vulkan.h"
#include "VulkanDevice.h"
#include "VulkanBuffer.h"
#include <ktx.h>
#include <ktxvulkan.h>
namespace vks
{
class HeightMap
{
private:
uint16_t *heightdata;
uint32_t dim;
uint32_t scale;
vks::VulkanDevice *device = nullptr;
VkQueue copyQueue = VK_NULL_HANDLE;
public:
enum Topology { topologyTriangles, topologyQuads };
float heightScale = 1.0f;
float uvScale = 1.0f;
vks::Buffer vertexBuffer;
vks::Buffer indexBuffer;
struct Vertex {
glm::vec3 pos;
glm::vec3 normal;
glm::vec2 uv;
};
size_t vertexBufferSize = 0;
size_t indexBufferSize = 0;
uint32_t indexCount = 0;
HeightMap(vks::VulkanDevice *device, VkQueue copyQueue)
{
this->device = device;
this->copyQueue = copyQueue;
};
~HeightMap()
{
vertexBuffer.destroy();
indexBuffer.destroy();
delete[] heightdata;
}
float getHeight(uint32_t x, uint32_t y)
{
glm::ivec2 rpos = glm::ivec2(x, y) * glm::ivec2(scale);
rpos.x = std::max(0, std::min(rpos.x, (int)dim - 1));
rpos.y = std::max(0, std::min(rpos.y, (int)dim - 1));
rpos /= glm::ivec2(scale);
return *(heightdata + (rpos.x + rpos.y * dim) * scale) / 65535.0f * heightScale;
}
#if defined(__ANDROID__)
void loadFromFile(const std::string filename, uint32_t patchsize, glm::vec3 scale, Topology topology, AAssetManager* assetManager)
#else
void loadFromFile(const std::string filename, uint32_t patchsize, glm::vec3 scale, Topology topology)
#endif
{
assert(device);
assert(copyQueue != VK_NULL_HANDLE);
ktxResult result;
ktxTexture* ktxTexture;
#if defined(__ANDROID__)
AAsset* asset = AAssetManager_open(androidApp->activity->assetManager, filename.c_str(), AASSET_MODE_STREAMING);
assert(asset);
size_t size = AAsset_getLength(asset);
assert(size > 0);
void *textureData = malloc(size);
AAsset_read(asset, textureData, size);
AAsset_close(asset);
result = ktxTexture_CreateFromMemory(textureData, size, KTX_TEXTURE_CREATE_LOAD_IMAGE_DATA_BIT, target);
free(textureData);
#else
result = ktxTexture_CreateFromNamedFile(filename.c_str(), KTX_TEXTURE_CREATE_LOAD_IMAGE_DATA_BIT, &ktxTexture);
#endif
assert(result == KTX_SUCCESS);
ktx_size_t ktxSize = ktxTexture_GetImageSize(ktxTexture, 0);
ktx_uint8_t* ktxImage = ktxTexture_GetData(ktxTexture);
dim = ktxTexture->baseWidth;
heightdata = new uint16_t[dim * dim];
memcpy(heightdata, ktxImage, ktxSize);
this->scale = dim / patchsize;
ktxTexture_Destroy(ktxTexture);
// Generate vertices
Vertex * vertices = new Vertex[patchsize * patchsize * 4];
const float wx = 2.0f;
const float wy = 2.0f;
for (uint32_t x = 0; x < patchsize; x++)
{
for (uint32_t y = 0; y < patchsize; y++)
{
uint32_t index = (x + y * patchsize);
vertices[index].pos[0] = (x * wx + wx / 2.0f - (float)patchsize * wx / 2.0f) * scale.x;
vertices[index].pos[1] = -getHeight(x, y);
vertices[index].pos[2] = (y * wy + wy / 2.0f - (float)patchsize * wy / 2.0f) * scale.z;
vertices[index].uv = glm::vec2((float)x / patchsize, (float)y / patchsize) * uvScale;
}
}
for (uint32_t y = 0; y < patchsize; y++)
{
for (uint32_t x = 0; x < patchsize; x++)
{
float dx = getHeight(x < patchsize - 1 ? x + 1 : x, y) - getHeight(x > 0 ? x - 1 : x, y);
if (x == 0 || x == patchsize - 1)
dx *= 2.0f;
float dy = getHeight(x, y < patchsize - 1 ? y + 1 : y) - getHeight(x, y > 0 ? y - 1 : y);
if (y == 0 || y == patchsize - 1)
dy *= 2.0f;
glm::vec3 A = glm::vec3(1.0f, 0.0f, dx);
glm::vec3 B = glm::vec3(0.0f, 1.0f, dy);
glm::vec3 normal = (glm::normalize(glm::cross(A, B)) + 1.0f) * 0.5f;
vertices[x + y * patchsize].normal = glm::vec3(normal.x, normal.z, normal.y);
}
}
// Generate indices
const uint32_t w = (patchsize - 1);
uint32_t *indices;
switch (topology)
{
// Indices for triangles
case topologyTriangles:
{
indices = new uint32_t[w * w * 6];
for (uint32_t x = 0; x < w; x++)
{
for (uint32_t y = 0; y < w; y++)
{
uint32_t index = (x + y * w) * 6;
indices[index] = (x + y * patchsize);
indices[index + 1] = indices[index] + patchsize;
indices[index + 2] = indices[index + 1] + 1;
indices[index + 3] = indices[index + 1] + 1;
indices[index + 4] = indices[index] + 1;
indices[index + 5] = indices[index];
}
}
indexCount = (patchsize - 1) * (patchsize - 1) * 6;
indexBufferSize = (w * w * 6) * sizeof(uint32_t);
break;
}
// Indices for quad patches (tessellation)
case topologyQuads:
{
indices = new uint32_t[w * w * 4];
for (uint32_t x = 0; x < w; x++)
{
for (uint32_t y = 0; y < w; y++)
{
uint32_t index = (x + y * w) * 4;
indices[index] = (x + y * patchsize);
indices[index + 1] = indices[index] + patchsize;
indices[index + 2] = indices[index + 1] + 1;
indices[index + 3] = indices[index] + 1;
}
}
indexCount = (patchsize - 1) * (patchsize - 1) * 4;
indexBufferSize = (w * w * 4) * sizeof(uint32_t);
break;
}
}
assert(indexBufferSize > 0);
vertexBufferSize = (patchsize * patchsize * 4) * sizeof(Vertex);
// Generate Vulkan buffers
vks::Buffer vertexStaging, indexStaging;
// Create staging buffers
device->createBuffer(
VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
&vertexStaging,
vertexBufferSize,
vertices);
device->createBuffer(
VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
&indexStaging,
indexBufferSize,
indices);
// Device local (target) buffer
device->createBuffer(
VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT,
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
&vertexBuffer,
vertexBufferSize);
device->createBuffer(
VK_BUFFER_USAGE_INDEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT,
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
&indexBuffer,
indexBufferSize);
// Copy from staging buffers
VkCommandBuffer copyCmd = device->createCommandBuffer(VK_COMMAND_BUFFER_LEVEL_PRIMARY, true);
VkBufferCopy copyRegion = {};
copyRegion.size = vertexBufferSize;
vkCmdCopyBuffer(
copyCmd,
vertexStaging.buffer,
vertexBuffer.buffer,
1,
&copyRegion);
copyRegion.size = indexBufferSize;
vkCmdCopyBuffer(
copyCmd,
indexStaging.buffer,
indexBuffer.buffer,
1,
&copyRegion);
device->flushCommandBuffer(copyCmd, copyQueue, true);
vkDestroyBuffer(device->logicalDevice, vertexStaging.buffer, nullptr);
vkFreeMemory(device->logicalDevice, vertexStaging.memory, nullptr);
vkDestroyBuffer(device->logicalDevice, indexStaging.buffer, nullptr);
vkFreeMemory(device->logicalDevice, indexStaging.memory, nullptr);
}
};
}

View File

@ -0,0 +1,329 @@
/*
* Extended sample base class for ray tracing based samples
*
* Copyright (C) 2020-2021 by Sascha Willems - www.saschawillems.de
*
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
*/
#include "VulkanRaytracingSample.h"
void VulkanRaytracingSample::updateRenderPass()
{
// Update the default render pass with different color attachment load ops to keep attachment contents
// With this change, we can e.g. draw an UI on top of the ray traced scene
vkDestroyRenderPass(device, renderPass, nullptr);
std::array<VkAttachmentDescription, 2> attachments = {};
// Color attachment
attachments[0].format = swapChain.colorFormat;
attachments[0].samples = VK_SAMPLE_COUNT_1_BIT;
attachments[0].loadOp = VK_ATTACHMENT_LOAD_OP_LOAD;
attachments[0].storeOp = VK_ATTACHMENT_STORE_OP_STORE;
attachments[0].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
attachments[0].stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
attachments[0].initialLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR;
attachments[0].finalLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR;
// Depth attachment
attachments[1].format = depthFormat;
attachments[1].samples = VK_SAMPLE_COUNT_1_BIT;
attachments[1].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
attachments[1].storeOp = VK_ATTACHMENT_STORE_OP_STORE;
attachments[1].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
attachments[1].stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
attachments[1].initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
attachments[1].finalLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
VkAttachmentReference colorReference = {};
colorReference.attachment = 0;
colorReference.layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
VkAttachmentReference depthReference = {};
depthReference.attachment = 1;
depthReference.layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
VkSubpassDescription subpassDescription = {};
subpassDescription.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS;
subpassDescription.colorAttachmentCount = 1;
subpassDescription.pColorAttachments = &colorReference;
subpassDescription.pDepthStencilAttachment = &depthReference;
subpassDescription.inputAttachmentCount = 0;
subpassDescription.pInputAttachments = nullptr;
subpassDescription.preserveAttachmentCount = 0;
subpassDescription.pPreserveAttachments = nullptr;
subpassDescription.pResolveAttachments = nullptr;
// Subpass dependencies for layout transitions
std::array<VkSubpassDependency, 2> dependencies;
dependencies[0].srcSubpass = VK_SUBPASS_EXTERNAL;
dependencies[0].dstSubpass = 0;
dependencies[0].srcStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT;
dependencies[0].dstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
dependencies[0].srcAccessMask = VK_ACCESS_MEMORY_READ_BIT;
dependencies[0].dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
dependencies[0].dependencyFlags = VK_DEPENDENCY_BY_REGION_BIT;
dependencies[1].srcSubpass = 0;
dependencies[1].dstSubpass = VK_SUBPASS_EXTERNAL;
dependencies[1].srcStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
dependencies[1].dstStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT;
dependencies[1].srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
dependencies[1].dstAccessMask = VK_ACCESS_MEMORY_READ_BIT;
dependencies[1].dependencyFlags = VK_DEPENDENCY_BY_REGION_BIT;
VkRenderPassCreateInfo renderPassInfo = {};
renderPassInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO;
renderPassInfo.attachmentCount = static_cast<uint32_t>(attachments.size());
renderPassInfo.pAttachments = attachments.data();
renderPassInfo.subpassCount = 1;
renderPassInfo.pSubpasses = &subpassDescription;
renderPassInfo.dependencyCount = static_cast<uint32_t>(dependencies.size());
renderPassInfo.pDependencies = dependencies.data();
VK_CHECK_RESULT(vkCreateRenderPass(device, &renderPassInfo, nullptr, &renderPass));
}
void VulkanRaytracingSample::enableExtensions()
{
// Require Vulkan 1.1
apiVersion = VK_API_VERSION_1_1;
// Ray tracing related extensions required by this sample
enabledDeviceExtensions.push_back(VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME);
if (!rayQueryOnly) {
enabledDeviceExtensions.push_back(VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME);
}
// Required by VK_KHR_acceleration_structure
enabledDeviceExtensions.push_back(VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME);
enabledDeviceExtensions.push_back(VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME);
enabledDeviceExtensions.push_back(VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME);
// Required for VK_KHR_ray_tracing_pipeline
enabledDeviceExtensions.push_back(VK_KHR_SPIRV_1_4_EXTENSION_NAME);
// Required by VK_KHR_spirv_1_4
enabledDeviceExtensions.push_back(VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME);
}
VulkanRaytracingSample::ScratchBuffer VulkanRaytracingSample::createScratchBuffer(VkDeviceSize size)
{
ScratchBuffer scratchBuffer{};
// Buffer and memory
VkBufferCreateInfo bufferCreateInfo{};
bufferCreateInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
bufferCreateInfo.size = size;
bufferCreateInfo.usage = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT;
VK_CHECK_RESULT(vkCreateBuffer(vulkanDevice->logicalDevice, &bufferCreateInfo, nullptr, &scratchBuffer.handle));
VkMemoryRequirements memoryRequirements{};
vkGetBufferMemoryRequirements(vulkanDevice->logicalDevice, scratchBuffer.handle, &memoryRequirements);
VkMemoryAllocateFlagsInfo memoryAllocateFlagsInfo{};
memoryAllocateFlagsInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO;
memoryAllocateFlagsInfo.flags = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR;
VkMemoryAllocateInfo memoryAllocateInfo = {};
memoryAllocateInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;
memoryAllocateInfo.pNext = &memoryAllocateFlagsInfo;
memoryAllocateInfo.allocationSize = memoryRequirements.size;
memoryAllocateInfo.memoryTypeIndex = vulkanDevice->getMemoryType(memoryRequirements.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT);
VK_CHECK_RESULT(vkAllocateMemory(vulkanDevice->logicalDevice, &memoryAllocateInfo, nullptr, &scratchBuffer.memory));
VK_CHECK_RESULT(vkBindBufferMemory(vulkanDevice->logicalDevice, scratchBuffer.handle, scratchBuffer.memory, 0));
// Buffer device address
VkBufferDeviceAddressInfoKHR bufferDeviceAddresInfo{};
bufferDeviceAddresInfo.sType = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO;
bufferDeviceAddresInfo.buffer = scratchBuffer.handle;
scratchBuffer.deviceAddress = vkGetBufferDeviceAddressKHR(vulkanDevice->logicalDevice, &bufferDeviceAddresInfo);
return scratchBuffer;
}
void VulkanRaytracingSample::deleteScratchBuffer(ScratchBuffer& scratchBuffer)
{
if (scratchBuffer.memory != VK_NULL_HANDLE) {
vkFreeMemory(vulkanDevice->logicalDevice, scratchBuffer.memory, nullptr);
}
if (scratchBuffer.handle != VK_NULL_HANDLE) {
vkDestroyBuffer(vulkanDevice->logicalDevice, scratchBuffer.handle, nullptr);
}
}
void VulkanRaytracingSample::createAccelerationStructure(AccelerationStructure& accelerationStructure, VkAccelerationStructureTypeKHR type, VkAccelerationStructureBuildSizesInfoKHR buildSizeInfo)
{
// Buffer and memory
VkBufferCreateInfo bufferCreateInfo{};
bufferCreateInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
bufferCreateInfo.size = buildSizeInfo.accelerationStructureSize;
bufferCreateInfo.usage = VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR | VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT;
VK_CHECK_RESULT(vkCreateBuffer(vulkanDevice->logicalDevice, &bufferCreateInfo, nullptr, &accelerationStructure.buffer));
VkMemoryRequirements memoryRequirements{};
vkGetBufferMemoryRequirements(vulkanDevice->logicalDevice, accelerationStructure.buffer, &memoryRequirements);
VkMemoryAllocateFlagsInfo memoryAllocateFlagsInfo{};
memoryAllocateFlagsInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO;
memoryAllocateFlagsInfo.flags = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR;
VkMemoryAllocateInfo memoryAllocateInfo{};
memoryAllocateInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;
memoryAllocateInfo.pNext = &memoryAllocateFlagsInfo;
memoryAllocateInfo.allocationSize = memoryRequirements.size;
memoryAllocateInfo.memoryTypeIndex = vulkanDevice->getMemoryType(memoryRequirements.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT);
VK_CHECK_RESULT(vkAllocateMemory(vulkanDevice->logicalDevice, &memoryAllocateInfo, nullptr, &accelerationStructure.memory));
VK_CHECK_RESULT(vkBindBufferMemory(vulkanDevice->logicalDevice, accelerationStructure.buffer, accelerationStructure.memory, 0));
// Acceleration structure
VkAccelerationStructureCreateInfoKHR accelerationStructureCreate_info{};
accelerationStructureCreate_info.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR;
accelerationStructureCreate_info.buffer = accelerationStructure.buffer;
accelerationStructureCreate_info.size = buildSizeInfo.accelerationStructureSize;
accelerationStructureCreate_info.type = type;
vkCreateAccelerationStructureKHR(vulkanDevice->logicalDevice, &accelerationStructureCreate_info, nullptr, &accelerationStructure.handle);
// AS device address
VkAccelerationStructureDeviceAddressInfoKHR accelerationDeviceAddressInfo{};
accelerationDeviceAddressInfo.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR;
accelerationDeviceAddressInfo.accelerationStructure = accelerationStructure.handle;
accelerationStructure.deviceAddress = vkGetAccelerationStructureDeviceAddressKHR(vulkanDevice->logicalDevice, &accelerationDeviceAddressInfo);
}
void VulkanRaytracingSample::deleteAccelerationStructure(AccelerationStructure& accelerationStructure)
{
vkFreeMemory(device, accelerationStructure.memory, nullptr);
vkDestroyBuffer(device, accelerationStructure.buffer, nullptr);
vkDestroyAccelerationStructureKHR(device, accelerationStructure.handle, nullptr);
}
uint64_t VulkanRaytracingSample::getBufferDeviceAddress(VkBuffer buffer)
{
VkBufferDeviceAddressInfoKHR bufferDeviceAI{};
bufferDeviceAI.sType = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO;
bufferDeviceAI.buffer = buffer;
return vkGetBufferDeviceAddressKHR(vulkanDevice->logicalDevice, &bufferDeviceAI);
}
void VulkanRaytracingSample::createStorageImage(VkFormat format, VkExtent3D extent)
{
// Release ressources if image is to be recreated
if (storageImage.image != VK_NULL_HANDLE) {
vkDestroyImageView(device, storageImage.view, nullptr);
vkDestroyImage(device, storageImage.image, nullptr);
vkFreeMemory(device, storageImage.memory, nullptr);
storageImage = {};
}
VkImageCreateInfo image = vks::initializers::imageCreateInfo();
image.imageType = VK_IMAGE_TYPE_2D;
image.format = format;
image.extent = extent;
image.mipLevels = 1;
image.arrayLayers = 1;
image.samples = VK_SAMPLE_COUNT_1_BIT;
image.tiling = VK_IMAGE_TILING_OPTIMAL;
image.usage = VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_STORAGE_BIT;
image.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
VK_CHECK_RESULT(vkCreateImage(vulkanDevice->logicalDevice, &image, nullptr, &storageImage.image));
VkMemoryRequirements memReqs;
vkGetImageMemoryRequirements(vulkanDevice->logicalDevice, storageImage.image, &memReqs);
VkMemoryAllocateInfo memoryAllocateInfo = vks::initializers::memoryAllocateInfo();
memoryAllocateInfo.allocationSize = memReqs.size;
memoryAllocateInfo.memoryTypeIndex = vulkanDevice->getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT);
VK_CHECK_RESULT(vkAllocateMemory(vulkanDevice->logicalDevice, &memoryAllocateInfo, nullptr, &storageImage.memory));
VK_CHECK_RESULT(vkBindImageMemory(vulkanDevice->logicalDevice, storageImage.image, storageImage.memory, 0));
VkImageViewCreateInfo colorImageView = vks::initializers::imageViewCreateInfo();
colorImageView.viewType = VK_IMAGE_VIEW_TYPE_2D;
colorImageView.format = format;
colorImageView.subresourceRange = {};
colorImageView.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
colorImageView.subresourceRange.baseMipLevel = 0;
colorImageView.subresourceRange.levelCount = 1;
colorImageView.subresourceRange.baseArrayLayer = 0;
colorImageView.subresourceRange.layerCount = 1;
colorImageView.image = storageImage.image;
VK_CHECK_RESULT(vkCreateImageView(vulkanDevice->logicalDevice, &colorImageView, nullptr, &storageImage.view));
VkCommandBuffer cmdBuffer = vulkanDevice->createCommandBuffer(VK_COMMAND_BUFFER_LEVEL_PRIMARY, true);
vks::tools::setImageLayout(cmdBuffer, storageImage.image,
VK_IMAGE_LAYOUT_UNDEFINED,
VK_IMAGE_LAYOUT_GENERAL,
{ VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1 });
vulkanDevice->flushCommandBuffer(cmdBuffer, queue);
}
void VulkanRaytracingSample::deleteStorageImage()
{
vkDestroyImageView(vulkanDevice->logicalDevice, storageImage.view, nullptr);
vkDestroyImage(vulkanDevice->logicalDevice, storageImage.image, nullptr);
vkFreeMemory(vulkanDevice->logicalDevice, storageImage.memory, nullptr);
}
void VulkanRaytracingSample::prepare()
{
VulkanExampleBase::prepare();
// Get properties and features
rayTracingPipelineProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR;
VkPhysicalDeviceProperties2 deviceProperties2{};
deviceProperties2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
deviceProperties2.pNext = &rayTracingPipelineProperties;
vkGetPhysicalDeviceProperties2(physicalDevice, &deviceProperties2);
accelerationStructureFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR;
VkPhysicalDeviceFeatures2 deviceFeatures2{};
deviceFeatures2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
deviceFeatures2.pNext = &accelerationStructureFeatures;
vkGetPhysicalDeviceFeatures2(physicalDevice, &deviceFeatures2);
// Get the function pointers required for ray tracing
vkGetBufferDeviceAddressKHR = reinterpret_cast<PFN_vkGetBufferDeviceAddressKHR>(vkGetDeviceProcAddr(device, "vkGetBufferDeviceAddressKHR"));
vkCmdBuildAccelerationStructuresKHR = reinterpret_cast<PFN_vkCmdBuildAccelerationStructuresKHR>(vkGetDeviceProcAddr(device, "vkCmdBuildAccelerationStructuresKHR"));
vkBuildAccelerationStructuresKHR = reinterpret_cast<PFN_vkBuildAccelerationStructuresKHR>(vkGetDeviceProcAddr(device, "vkBuildAccelerationStructuresKHR"));
vkCreateAccelerationStructureKHR = reinterpret_cast<PFN_vkCreateAccelerationStructureKHR>(vkGetDeviceProcAddr(device, "vkCreateAccelerationStructureKHR"));
vkDestroyAccelerationStructureKHR = reinterpret_cast<PFN_vkDestroyAccelerationStructureKHR>(vkGetDeviceProcAddr(device, "vkDestroyAccelerationStructureKHR"));
vkGetAccelerationStructureBuildSizesKHR = reinterpret_cast<PFN_vkGetAccelerationStructureBuildSizesKHR>(vkGetDeviceProcAddr(device, "vkGetAccelerationStructureBuildSizesKHR"));
vkGetAccelerationStructureDeviceAddressKHR = reinterpret_cast<PFN_vkGetAccelerationStructureDeviceAddressKHR>(vkGetDeviceProcAddr(device, "vkGetAccelerationStructureDeviceAddressKHR"));
vkCmdTraceRaysKHR = reinterpret_cast<PFN_vkCmdTraceRaysKHR>(vkGetDeviceProcAddr(device, "vkCmdTraceRaysKHR"));
vkGetRayTracingShaderGroupHandlesKHR = reinterpret_cast<PFN_vkGetRayTracingShaderGroupHandlesKHR>(vkGetDeviceProcAddr(device, "vkGetRayTracingShaderGroupHandlesKHR"));
vkCreateRayTracingPipelinesKHR = reinterpret_cast<PFN_vkCreateRayTracingPipelinesKHR>(vkGetDeviceProcAddr(device, "vkCreateRayTracingPipelinesKHR"));
// Update the render pass to keep the color attachment contents, so we can draw the UI on top of the ray traced output
if (!rayQueryOnly) {
updateRenderPass();
}
}
VkStridedDeviceAddressRegionKHR VulkanRaytracingSample::getSbtEntryStridedDeviceAddressRegion(VkBuffer buffer, uint32_t handleCount)
{
const uint32_t handleSizeAligned = vks::tools::alignedSize(rayTracingPipelineProperties.shaderGroupHandleSize, rayTracingPipelineProperties.shaderGroupHandleAlignment);
VkStridedDeviceAddressRegionKHR stridedDeviceAddressRegionKHR{};
stridedDeviceAddressRegionKHR.deviceAddress = getBufferDeviceAddress(buffer);
stridedDeviceAddressRegionKHR.stride = handleSizeAligned;
stridedDeviceAddressRegionKHR.size = handleCount * handleSizeAligned;
return stridedDeviceAddressRegionKHR;
}
void VulkanRaytracingSample::createShaderBindingTable(ShaderBindingTable& shaderBindingTable, uint32_t handleCount)
{
// Create buffer to hold all shader handles for the SBT
VK_CHECK_RESULT(vulkanDevice->createBuffer(
VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR | VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
&shaderBindingTable,
rayTracingPipelineProperties.shaderGroupHandleSize * handleCount));
// Get the strided address to be used when dispatching the rays
shaderBindingTable.stridedDeviceAddressRegion = getSbtEntryStridedDeviceAddressRegion(shaderBindingTable.buffer, handleCount);
// Map persistent
shaderBindingTable.map();
}
void VulkanRaytracingSample::drawUI(VkCommandBuffer commandBuffer, VkFramebuffer framebuffer)
{
VkClearValue clearValues[2];
clearValues[0].color = defaultClearColor;
clearValues[1].depthStencil = { 1.0f, 0 };
VkRenderPassBeginInfo renderPassBeginInfo = vks::initializers::renderPassBeginInfo();
renderPassBeginInfo.renderPass = renderPass;
renderPassBeginInfo.renderArea.offset.x = 0;
renderPassBeginInfo.renderArea.offset.y = 0;
renderPassBeginInfo.renderArea.extent.width = width;
renderPassBeginInfo.renderArea.extent.height = height;
renderPassBeginInfo.clearValueCount = 2;
renderPassBeginInfo.pClearValues = clearValues;
renderPassBeginInfo.framebuffer = framebuffer;
vkCmdBeginRenderPass(commandBuffer, &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE);
VulkanExampleBase::drawUI(commandBuffer);
vkCmdEndRenderPass(commandBuffer);
}

View File

@ -0,0 +1,90 @@
/*
* Extended sample base class for ray tracing based samples
*
* Copyright (C) 2020 by Sascha Willems - www.saschawillems.de
*
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
*/
#pragma once
#include "vulkan/vulkan.h"
#include "vulkanexamplebase.h"
#include "VulkanTools.h"
#include "VulkanDevice.h"
class VulkanRaytracingSample : public VulkanExampleBase
{
protected:
// Update the default render pass with different color attachment load ops
virtual void updateRenderPass();
public:
// Function pointers for ray tracing related stuff
PFN_vkGetBufferDeviceAddressKHR vkGetBufferDeviceAddressKHR;
PFN_vkCreateAccelerationStructureKHR vkCreateAccelerationStructureKHR;
PFN_vkDestroyAccelerationStructureKHR vkDestroyAccelerationStructureKHR;
PFN_vkGetAccelerationStructureBuildSizesKHR vkGetAccelerationStructureBuildSizesKHR;
PFN_vkGetAccelerationStructureDeviceAddressKHR vkGetAccelerationStructureDeviceAddressKHR;
PFN_vkBuildAccelerationStructuresKHR vkBuildAccelerationStructuresKHR;
PFN_vkCmdBuildAccelerationStructuresKHR vkCmdBuildAccelerationStructuresKHR;
PFN_vkCmdTraceRaysKHR vkCmdTraceRaysKHR;
PFN_vkGetRayTracingShaderGroupHandlesKHR vkGetRayTracingShaderGroupHandlesKHR;
PFN_vkCreateRayTracingPipelinesKHR vkCreateRayTracingPipelinesKHR;
// Available features and properties
VkPhysicalDeviceRayTracingPipelinePropertiesKHR rayTracingPipelineProperties{};
VkPhysicalDeviceAccelerationStructureFeaturesKHR accelerationStructureFeatures{};
// Enabled features and properties
VkPhysicalDeviceBufferDeviceAddressFeatures enabledBufferDeviceAddresFeatures{};
VkPhysicalDeviceRayTracingPipelineFeaturesKHR enabledRayTracingPipelineFeatures{};
VkPhysicalDeviceAccelerationStructureFeaturesKHR enabledAccelerationStructureFeatures{};
// Holds information for a ray tracing scratch buffer that is used as a temporary storage
struct ScratchBuffer
{
uint64_t deviceAddress = 0;
VkBuffer handle = VK_NULL_HANDLE;
VkDeviceMemory memory = VK_NULL_HANDLE;
};
// Holds information for a ray tracing acceleration structure
struct AccelerationStructure {
VkAccelerationStructureKHR handle;
uint64_t deviceAddress = 0;
VkDeviceMemory memory;
VkBuffer buffer;
};
// Holds information for a storage image that the ray tracing shaders output to
struct StorageImage {
VkDeviceMemory memory = VK_NULL_HANDLE;
VkImage image = VK_NULL_HANDLE;
VkImageView view = VK_NULL_HANDLE;
VkFormat format;
} storageImage;
// Extends the buffer class and holds information for a shader binding table
class ShaderBindingTable : public vks::Buffer {
public:
VkStridedDeviceAddressRegionKHR stridedDeviceAddressRegion{};
};
// Set to true, to denote that the sample only uses ray queries (changes extension and render pass handling)
bool rayQueryOnly = false;
void enableExtensions();
ScratchBuffer createScratchBuffer(VkDeviceSize size);
void deleteScratchBuffer(ScratchBuffer& scratchBuffer);
void createAccelerationStructure(AccelerationStructure& accelerationStructure, VkAccelerationStructureTypeKHR type, VkAccelerationStructureBuildSizesInfoKHR buildSizeInfo);
void deleteAccelerationStructure(AccelerationStructure& accelerationStructure);
uint64_t getBufferDeviceAddress(VkBuffer buffer);
void createStorageImage(VkFormat format, VkExtent3D extent);
void deleteStorageImage();
VkStridedDeviceAddressRegionKHR getSbtEntryStridedDeviceAddressRegion(VkBuffer buffer, uint32_t handleCount);
void createShaderBindingTable(ShaderBindingTable& shaderBindingTable, uint32_t handleCount);
// Draw the ImGUI UI overlay using a render pass
void drawUI(VkCommandBuffer commandBuffer, VkFramebuffer framebuffer);
virtual void prepare();
};

View File

@ -0,0 +1,616 @@
/*
* Class wrapping access to the swap chain
*
* A swap chain is a collection of framebuffers used for rendering and presentation to the windowing system
*
* Copyright (C) 2016-2021 by Sascha Willems - www.saschawillems.de
*
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
*/
#include "VulkanSwapChain.h"
/** @brief Creates the platform specific surface abstraction of the native platform window used for presentation */
#if defined(VK_USE_PLATFORM_WIN32_KHR)
void VulkanSwapChain::initSurface(void* platformHandle, void* platformWindow)
#elif defined(VK_USE_PLATFORM_ANDROID_KHR)
void VulkanSwapChain::initSurface(ANativeWindow* window)
#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT)
void VulkanSwapChain::initSurface(IDirectFB* dfb, IDirectFBSurface* window)
#elif defined(VK_USE_PLATFORM_WAYLAND_KHR)
void VulkanSwapChain::initSurface(wl_display *display, wl_surface *window)
#elif defined(VK_USE_PLATFORM_XCB_KHR)
void VulkanSwapChain::initSurface(xcb_connection_t* connection, xcb_window_t window)
#elif (defined(VK_USE_PLATFORM_IOS_MVK) || defined(VK_USE_PLATFORM_MACOS_MVK))
void VulkanSwapChain::initSurface(void* view)
#elif (defined(_DIRECT2DISPLAY) || defined(VK_USE_PLATFORM_HEADLESS_EXT))
void VulkanSwapChain::initSurface(uint32_t width, uint32_t height)
#endif
{
VkResult err = VK_SUCCESS;
// Create the os-specific surface
#if defined(VK_USE_PLATFORM_WIN32_KHR)
VkWin32SurfaceCreateInfoKHR surfaceCreateInfo = {};
surfaceCreateInfo.sType = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR;
surfaceCreateInfo.hinstance = (HINSTANCE)platformHandle;
surfaceCreateInfo.hwnd = (HWND)platformWindow;
err = vkCreateWin32SurfaceKHR(instance, &surfaceCreateInfo, nullptr, &surface);
#elif defined(VK_USE_PLATFORM_ANDROID_KHR)
VkAndroidSurfaceCreateInfoKHR surfaceCreateInfo = {};
surfaceCreateInfo.sType = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR;
surfaceCreateInfo.window = window;
err = vkCreateAndroidSurfaceKHR(instance, &surfaceCreateInfo, NULL, &surface);
#elif defined(VK_USE_PLATFORM_IOS_MVK)
VkIOSSurfaceCreateInfoMVK surfaceCreateInfo = {};
surfaceCreateInfo.sType = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK;
surfaceCreateInfo.pNext = NULL;
surfaceCreateInfo.flags = 0;
surfaceCreateInfo.pView = view;
err = vkCreateIOSSurfaceMVK(instance, &surfaceCreateInfo, nullptr, &surface);
#elif defined(VK_USE_PLATFORM_MACOS_MVK)
VkMacOSSurfaceCreateInfoMVK surfaceCreateInfo = {};
surfaceCreateInfo.sType = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK;
surfaceCreateInfo.pNext = NULL;
surfaceCreateInfo.flags = 0;
surfaceCreateInfo.pView = view;
err = vkCreateMacOSSurfaceMVK(instance, &surfaceCreateInfo, NULL, &surface);
#elif defined(_DIRECT2DISPLAY)
createDirect2DisplaySurface(width, height);
#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT)
VkDirectFBSurfaceCreateInfoEXT surfaceCreateInfo = {};
surfaceCreateInfo.sType = VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT;
surfaceCreateInfo.dfb = dfb;
surfaceCreateInfo.surface = window;
err = vkCreateDirectFBSurfaceEXT(instance, &surfaceCreateInfo, nullptr, &surface);
#elif defined(VK_USE_PLATFORM_WAYLAND_KHR)
VkWaylandSurfaceCreateInfoKHR surfaceCreateInfo = {};
surfaceCreateInfo.sType = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR;
surfaceCreateInfo.display = display;
surfaceCreateInfo.surface = window;
err = vkCreateWaylandSurfaceKHR(instance, &surfaceCreateInfo, nullptr, &surface);
#elif defined(VK_USE_PLATFORM_XCB_KHR)
VkXcbSurfaceCreateInfoKHR surfaceCreateInfo = {};
surfaceCreateInfo.sType = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR;
surfaceCreateInfo.connection = connection;
surfaceCreateInfo.window = window;
err = vkCreateXcbSurfaceKHR(instance, &surfaceCreateInfo, nullptr, &surface);
#elif defined(VK_USE_PLATFORM_HEADLESS_EXT)
VkHeadlessSurfaceCreateInfoEXT surfaceCreateInfo = {};
surfaceCreateInfo.sType = VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT;
PFN_vkCreateHeadlessSurfaceEXT fpCreateHeadlessSurfaceEXT = (PFN_vkCreateHeadlessSurfaceEXT)vkGetInstanceProcAddr(instance, "vkCreateHeadlessSurfaceEXT");
if (!fpCreateHeadlessSurfaceEXT){
vks::tools::exitFatal("Could not fetch function pointer for the headless extension!", -1);
}
err = fpCreateHeadlessSurfaceEXT(instance, &surfaceCreateInfo, nullptr, &surface);
#endif
if (err != VK_SUCCESS) {
vks::tools::exitFatal("Could not create surface!", err);
}
// Get available queue family properties
uint32_t queueCount;
vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, &queueCount, NULL);
assert(queueCount >= 1);
std::vector<VkQueueFamilyProperties> queueProps(queueCount);
vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, &queueCount, queueProps.data());
// Iterate over each queue to learn whether it supports presenting:
// Find a queue with present support
// Will be used to present the swap chain images to the windowing system
std::vector<VkBool32> supportsPresent(queueCount);
for (uint32_t i = 0; i < queueCount; i++)
{
fpGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, i, surface, &supportsPresent[i]);
}
// Search for a graphics and a present queue in the array of queue
// families, try to find one that supports both
uint32_t graphicsQueueNodeIndex = UINT32_MAX;
uint32_t presentQueueNodeIndex = UINT32_MAX;
for (uint32_t i = 0; i < queueCount; i++)
{
if ((queueProps[i].queueFlags & VK_QUEUE_GRAPHICS_BIT) != 0)
{
if (graphicsQueueNodeIndex == UINT32_MAX)
{
graphicsQueueNodeIndex = i;
}
if (supportsPresent[i] == VK_TRUE)
{
graphicsQueueNodeIndex = i;
presentQueueNodeIndex = i;
break;
}
}
}
if (presentQueueNodeIndex == UINT32_MAX)
{
// If there's no queue that supports both present and graphics
// try to find a separate present queue
for (uint32_t i = 0; i < queueCount; ++i)
{
if (supportsPresent[i] == VK_TRUE)
{
presentQueueNodeIndex = i;
break;
}
}
}
// Exit if either a graphics or a presenting queue hasn't been found
if (graphicsQueueNodeIndex == UINT32_MAX || presentQueueNodeIndex == UINT32_MAX)
{
vks::tools::exitFatal("Could not find a graphics and/or presenting queue!", -1);
}
// todo : Add support for separate graphics and presenting queue
if (graphicsQueueNodeIndex != presentQueueNodeIndex)
{
vks::tools::exitFatal("Separate graphics and presenting queues are not supported yet!", -1);
}
queueNodeIndex = graphicsQueueNodeIndex;
// Get list of supported surface formats
uint32_t formatCount;
VK_CHECK_RESULT(fpGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, &formatCount, NULL));
assert(formatCount > 0);
std::vector<VkSurfaceFormatKHR> surfaceFormats(formatCount);
VK_CHECK_RESULT(fpGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, &formatCount, surfaceFormats.data()));
// If the surface format list only includes one entry with VK_FORMAT_UNDEFINED,
// there is no preferred format, so we assume VK_FORMAT_B8G8R8A8_UNORM
if ((formatCount == 1) && (surfaceFormats[0].format == VK_FORMAT_UNDEFINED))
{
colorFormat = VK_FORMAT_B8G8R8A8_UNORM;
colorSpace = surfaceFormats[0].colorSpace;
}
else
{
// iterate over the list of available surface format and
// check for the presence of VK_FORMAT_B8G8R8A8_UNORM
bool found_B8G8R8A8_UNORM = false;
for (auto&& surfaceFormat : surfaceFormats)
{
if (surfaceFormat.format == VK_FORMAT_B8G8R8A8_UNORM)
{
colorFormat = surfaceFormat.format;
colorSpace = surfaceFormat.colorSpace;
found_B8G8R8A8_UNORM = true;
break;
}
}
// in case VK_FORMAT_B8G8R8A8_UNORM is not available
// select the first available color format
if (!found_B8G8R8A8_UNORM)
{
colorFormat = surfaceFormats[0].format;
colorSpace = surfaceFormats[0].colorSpace;
}
}
}
/**
* Set instance, physical and logical device to use for the swapchain and get all required function pointers
*
* @param instance Vulkan instance to use
* @param physicalDevice Physical device used to query properties and formats relevant to the swapchain
* @param device Logical representation of the device to create the swapchain for
*
*/
void VulkanSwapChain::connect(VkInstance instance, VkPhysicalDevice physicalDevice, VkDevice device)
{
this->instance = instance;
this->physicalDevice = physicalDevice;
this->device = device;
fpGetPhysicalDeviceSurfaceSupportKHR = reinterpret_cast<PFN_vkGetPhysicalDeviceSurfaceSupportKHR>(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceSupportKHR"));
fpGetPhysicalDeviceSurfaceCapabilitiesKHR = reinterpret_cast<PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR>(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"));
fpGetPhysicalDeviceSurfaceFormatsKHR = reinterpret_cast<PFN_vkGetPhysicalDeviceSurfaceFormatsKHR>(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceFormatsKHR"));
fpGetPhysicalDeviceSurfacePresentModesKHR = reinterpret_cast<PFN_vkGetPhysicalDeviceSurfacePresentModesKHR>(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfacePresentModesKHR"));
fpCreateSwapchainKHR = reinterpret_cast<PFN_vkCreateSwapchainKHR>(vkGetDeviceProcAddr(device, "vkCreateSwapchainKHR"));
fpDestroySwapchainKHR = reinterpret_cast<PFN_vkDestroySwapchainKHR>(vkGetDeviceProcAddr(device, "vkDestroySwapchainKHR"));
fpGetSwapchainImagesKHR = reinterpret_cast<PFN_vkGetSwapchainImagesKHR>(vkGetDeviceProcAddr(device, "vkGetSwapchainImagesKHR"));
fpAcquireNextImageKHR = reinterpret_cast<PFN_vkAcquireNextImageKHR>(vkGetDeviceProcAddr(device, "vkAcquireNextImageKHR"));
fpQueuePresentKHR = reinterpret_cast<PFN_vkQueuePresentKHR>(vkGetDeviceProcAddr(device, "vkQueuePresentKHR"));
}
/**
* Create the swapchain and get its images with given width and height
*
* @param width Pointer to the width of the swapchain (may be adjusted to fit the requirements of the swapchain)
* @param height Pointer to the height of the swapchain (may be adjusted to fit the requirements of the swapchain)
* @param vsync (Optional) Can be used to force vsync-ed rendering (by using VK_PRESENT_MODE_FIFO_KHR as presentation mode)
*/
void VulkanSwapChain::create(uint32_t *width, uint32_t *height, bool vsync, bool fullscreen)
{
// Store the current swap chain handle so we can use it later on to ease up recreation
VkSwapchainKHR oldSwapchain = swapChain;
// Get physical device surface properties and formats
VkSurfaceCapabilitiesKHR surfCaps;
VK_CHECK_RESULT(fpGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, &surfCaps));
// Get available present modes
uint32_t presentModeCount;
VK_CHECK_RESULT(fpGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, &presentModeCount, NULL));
assert(presentModeCount > 0);
std::vector<VkPresentModeKHR> presentModes(presentModeCount);
VK_CHECK_RESULT(fpGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, &presentModeCount, presentModes.data()));
VkExtent2D swapchainExtent = {};
// If width (and height) equals the special value 0xFFFFFFFF, the size of the surface will be set by the swapchain
if (surfCaps.currentExtent.width == (uint32_t)-1)
{
// If the surface size is undefined, the size is set to
// the size of the images requested.
swapchainExtent.width = *width;
swapchainExtent.height = *height;
}
else
{
// If the surface size is defined, the swap chain size must match
swapchainExtent = surfCaps.currentExtent;
*width = surfCaps.currentExtent.width;
*height = surfCaps.currentExtent.height;
}
// Select a present mode for the swapchain
// The VK_PRESENT_MODE_FIFO_KHR mode must always be present as per spec
// This mode waits for the vertical blank ("v-sync")
VkPresentModeKHR swapchainPresentMode = VK_PRESENT_MODE_FIFO_KHR;
// If v-sync is not requested, try to find a mailbox mode
// It's the lowest latency non-tearing present mode available
if (!vsync)
{
for (size_t i = 0; i < presentModeCount; i++)
{
if (presentModes[i] == VK_PRESENT_MODE_MAILBOX_KHR)
{
swapchainPresentMode = VK_PRESENT_MODE_MAILBOX_KHR;
break;
}
if (presentModes[i] == VK_PRESENT_MODE_IMMEDIATE_KHR)
{
swapchainPresentMode = VK_PRESENT_MODE_IMMEDIATE_KHR;
}
}
}
// Determine the number of images
uint32_t desiredNumberOfSwapchainImages = surfCaps.minImageCount + 1;
#if (defined(VK_USE_PLATFORM_MACOS_MVK) && defined(VK_EXAMPLE_XCODE_GENERATED))
// SRS - Work around known MoltenVK issue re 2x frame rate when vsync (VK_PRESENT_MODE_FIFO_KHR) enabled
struct utsname sysInfo;
uname(&sysInfo);
// SRS - When vsync is on, use minImageCount when not in fullscreen or when running on Apple Silcon
// This forces swapchain image acquire frame rate to match display vsync frame rate
if (vsync && (!fullscreen || strcmp(sysInfo.machine, "arm64") == 0))
{
desiredNumberOfSwapchainImages = surfCaps.minImageCount;
}
#endif
if ((surfCaps.maxImageCount > 0) && (desiredNumberOfSwapchainImages > surfCaps.maxImageCount))
{
desiredNumberOfSwapchainImages = surfCaps.maxImageCount;
}
// Find the transformation of the surface
VkSurfaceTransformFlagsKHR preTransform;
if (surfCaps.supportedTransforms & VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR)
{
// We prefer a non-rotated transform
preTransform = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR;
}
else
{
preTransform = surfCaps.currentTransform;
}
// Find a supported composite alpha format (not all devices support alpha opaque)
VkCompositeAlphaFlagBitsKHR compositeAlpha = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR;
// Simply select the first composite alpha format available
std::vector<VkCompositeAlphaFlagBitsKHR> compositeAlphaFlags = {
VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,
VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,
VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,
VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR,
};
for (auto& compositeAlphaFlag : compositeAlphaFlags) {
if (surfCaps.supportedCompositeAlpha & compositeAlphaFlag) {
compositeAlpha = compositeAlphaFlag;
break;
};
}
VkSwapchainCreateInfoKHR swapchainCI = {};
swapchainCI.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR;
swapchainCI.surface = surface;
swapchainCI.minImageCount = desiredNumberOfSwapchainImages;
swapchainCI.imageFormat = colorFormat;
swapchainCI.imageColorSpace = colorSpace;
swapchainCI.imageExtent = { swapchainExtent.width, swapchainExtent.height };
swapchainCI.imageUsage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
swapchainCI.preTransform = (VkSurfaceTransformFlagBitsKHR)preTransform;
swapchainCI.imageArrayLayers = 1;
swapchainCI.imageSharingMode = VK_SHARING_MODE_EXCLUSIVE;
swapchainCI.queueFamilyIndexCount = 0;
swapchainCI.presentMode = swapchainPresentMode;
// Setting oldSwapChain to the saved handle of the previous swapchain aids in resource reuse and makes sure that we can still present already acquired images
swapchainCI.oldSwapchain = oldSwapchain;
// Setting clipped to VK_TRUE allows the implementation to discard rendering outside of the surface area
swapchainCI.clipped = VK_TRUE;
swapchainCI.compositeAlpha = compositeAlpha;
// Enable transfer source on swap chain images if supported
if (surfCaps.supportedUsageFlags & VK_IMAGE_USAGE_TRANSFER_SRC_BIT) {
swapchainCI.imageUsage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT;
}
// Enable transfer destination on swap chain images if supported
if (surfCaps.supportedUsageFlags & VK_IMAGE_USAGE_TRANSFER_DST_BIT) {
swapchainCI.imageUsage |= VK_IMAGE_USAGE_TRANSFER_DST_BIT;
}
VK_CHECK_RESULT(fpCreateSwapchainKHR(device, &swapchainCI, nullptr, &swapChain));
// If an existing swap chain is re-created, destroy the old swap chain
// This also cleans up all the presentable images
if (oldSwapchain != VK_NULL_HANDLE)
{
for (uint32_t i = 0; i < imageCount; i++)
{
vkDestroyImageView(device, buffers[i].view, nullptr);
}
fpDestroySwapchainKHR(device, oldSwapchain, nullptr);
}
VK_CHECK_RESULT(fpGetSwapchainImagesKHR(device, swapChain, &imageCount, NULL));
// Get the swap chain images
images.resize(imageCount);
VK_CHECK_RESULT(fpGetSwapchainImagesKHR(device, swapChain, &imageCount, images.data()));
// Get the swap chain buffers containing the image and imageview
buffers.resize(imageCount);
for (uint32_t i = 0; i < imageCount; i++)
{
VkImageViewCreateInfo colorAttachmentView = {};
colorAttachmentView.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
colorAttachmentView.pNext = NULL;
colorAttachmentView.format = colorFormat;
colorAttachmentView.components = {
VK_COMPONENT_SWIZZLE_R,
VK_COMPONENT_SWIZZLE_G,
VK_COMPONENT_SWIZZLE_B,
VK_COMPONENT_SWIZZLE_A
};
colorAttachmentView.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
colorAttachmentView.subresourceRange.baseMipLevel = 0;
colorAttachmentView.subresourceRange.levelCount = 1;
colorAttachmentView.subresourceRange.baseArrayLayer = 0;
colorAttachmentView.subresourceRange.layerCount = 1;
colorAttachmentView.viewType = VK_IMAGE_VIEW_TYPE_2D;
colorAttachmentView.flags = 0;
buffers[i].image = images[i];
colorAttachmentView.image = buffers[i].image;
VK_CHECK_RESULT(vkCreateImageView(device, &colorAttachmentView, nullptr, &buffers[i].view));
}
}
/**
* Acquires the next image in the swap chain
*
* @param presentCompleteSemaphore (Optional) Semaphore that is signaled when the image is ready for use
* @param imageIndex Pointer to the image index that will be increased if the next image could be acquired
*
* @note The function will always wait until the next image has been acquired by setting timeout to UINT64_MAX
*
* @return VkResult of the image acquisition
*/
VkResult VulkanSwapChain::acquireNextImage(VkSemaphore presentCompleteSemaphore, uint32_t *imageIndex)
{
// By setting timeout to UINT64_MAX we will always wait until the next image has been acquired or an actual error is thrown
// With that we don't have to handle VK_NOT_READY
return fpAcquireNextImageKHR(device, swapChain, UINT64_MAX, presentCompleteSemaphore, (VkFence)nullptr, imageIndex);
}
/**
* Queue an image for presentation
*
* @param queue Presentation queue for presenting the image
* @param imageIndex Index of the swapchain image to queue for presentation
* @param waitSemaphore (Optional) Semaphore that is waited on before the image is presented (only used if != VK_NULL_HANDLE)
*
* @return VkResult of the queue presentation
*/
VkResult VulkanSwapChain::queuePresent(VkQueue queue, uint32_t imageIndex, VkSemaphore waitSemaphore)
{
VkPresentInfoKHR presentInfo = {};
presentInfo.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR;
presentInfo.pNext = NULL;
presentInfo.swapchainCount = 1;
presentInfo.pSwapchains = &swapChain;
presentInfo.pImageIndices = &imageIndex;
// Check if a wait semaphore has been specified to wait for before presenting the image
if (waitSemaphore != VK_NULL_HANDLE)
{
presentInfo.pWaitSemaphores = &waitSemaphore;
presentInfo.waitSemaphoreCount = 1;
}
return fpQueuePresentKHR(queue, &presentInfo);
}
/**
* Destroy and free Vulkan resources used for the swapchain
*/
void VulkanSwapChain::cleanup()
{
if (swapChain != VK_NULL_HANDLE)
{
for (uint32_t i = 0; i < imageCount; i++)
{
vkDestroyImageView(device, buffers[i].view, nullptr);
}
}
if (surface != VK_NULL_HANDLE)
{
fpDestroySwapchainKHR(device, swapChain, nullptr);
vkDestroySurfaceKHR(instance, surface, nullptr);
}
surface = VK_NULL_HANDLE;
swapChain = VK_NULL_HANDLE;
}
#if defined(_DIRECT2DISPLAY)
/**
* Create direct to display surface
*/
void VulkanSwapChain::createDirect2DisplaySurface(uint32_t width, uint32_t height)
{
uint32_t displayPropertyCount;
// Get display property
vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, &displayPropertyCount, NULL);
VkDisplayPropertiesKHR* pDisplayProperties = new VkDisplayPropertiesKHR[displayPropertyCount];
vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, &displayPropertyCount, pDisplayProperties);
// Get plane property
uint32_t planePropertyCount;
vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, &planePropertyCount, NULL);
VkDisplayPlanePropertiesKHR* pPlaneProperties = new VkDisplayPlanePropertiesKHR[planePropertyCount];
vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, &planePropertyCount, pPlaneProperties);
VkDisplayKHR display = VK_NULL_HANDLE;
VkDisplayModeKHR displayMode;
VkDisplayModePropertiesKHR* pModeProperties;
bool foundMode = false;
for(uint32_t i = 0; i < displayPropertyCount;++i)
{
display = pDisplayProperties[i].display;
uint32_t modeCount;
vkGetDisplayModePropertiesKHR(physicalDevice, display, &modeCount, NULL);
pModeProperties = new VkDisplayModePropertiesKHR[modeCount];
vkGetDisplayModePropertiesKHR(physicalDevice, display, &modeCount, pModeProperties);
for (uint32_t j = 0; j < modeCount; ++j)
{
const VkDisplayModePropertiesKHR* mode = &pModeProperties[j];
if (mode->parameters.visibleRegion.width == width && mode->parameters.visibleRegion.height == height)
{
displayMode = mode->displayMode;
foundMode = true;
break;
}
}
if (foundMode)
{
break;
}
delete [] pModeProperties;
}
if(!foundMode)
{
vks::tools::exitFatal("Can't find a display and a display mode!", -1);
return;
}
// Search for a best plane we can use
uint32_t bestPlaneIndex = UINT32_MAX;
VkDisplayKHR* pDisplays = NULL;
for(uint32_t i = 0; i < planePropertyCount; i++)
{
uint32_t planeIndex=i;
uint32_t displayCount;
vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, &displayCount, NULL);
if (pDisplays)
{
delete [] pDisplays;
}
pDisplays = new VkDisplayKHR[displayCount];
vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, &displayCount, pDisplays);
// Find a display that matches the current plane
bestPlaneIndex = UINT32_MAX;
for(uint32_t j = 0; j < displayCount; j++)
{
if(display == pDisplays[j])
{
bestPlaneIndex = i;
break;
}
}
if(bestPlaneIndex != UINT32_MAX)
{
break;
}
}
if(bestPlaneIndex == UINT32_MAX)
{
vks::tools::exitFatal("Can't find a plane for displaying!", -1);
return;
}
VkDisplayPlaneCapabilitiesKHR planeCap;
vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, displayMode, bestPlaneIndex, &planeCap);
VkDisplayPlaneAlphaFlagBitsKHR alphaMode = (VkDisplayPlaneAlphaFlagBitsKHR)0;
if (planeCap.supportedAlpha & VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR)
{
alphaMode = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR;
}
else if (planeCap.supportedAlpha & VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR)
{
alphaMode = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR;
}
else if (planeCap.supportedAlpha & VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR)
{
alphaMode = VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR;
}
else if (planeCap.supportedAlpha & VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR)
{
alphaMode = VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR;
}
VkDisplaySurfaceCreateInfoKHR surfaceInfo{};
surfaceInfo.sType = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR;
surfaceInfo.pNext = NULL;
surfaceInfo.flags = 0;
surfaceInfo.displayMode = displayMode;
surfaceInfo.planeIndex = bestPlaneIndex;
surfaceInfo.planeStackIndex = pPlaneProperties[bestPlaneIndex].currentStackIndex;
surfaceInfo.transform = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR;
surfaceInfo.globalAlpha = 1.0;
surfaceInfo.alphaMode = alphaMode;
surfaceInfo.imageExtent.width = width;
surfaceInfo.imageExtent.height = height;
VkResult result = vkCreateDisplayPlaneSurfaceKHR(instance, &surfaceInfo, NULL, &surface);
if (result !=VK_SUCCESS) {
vks::tools::exitFatal("Failed to create surface!", result);
}
delete[] pDisplays;
delete[] pModeProperties;
delete[] pDisplayProperties;
delete[] pPlaneProperties;
}
#endif

View File

@ -0,0 +1,84 @@
/*
* Class wrapping access to the swap chain
*
* A swap chain is a collection of framebuffers used for rendering and presentation to the windowing system
*
* Copyright (C) 2016-2017 by Sascha Willems - www.saschawillems.de
*
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
*/
#pragma once
#include <stdlib.h>
#include <string>
#include <assert.h>
#include <stdio.h>
#include <vector>
#include <vulkan/vulkan.h>
#include "VulkanTools.h"
#ifdef __ANDROID__
#include "VulkanAndroid.h"
#endif
#ifdef __APPLE__
#include <sys/utsname.h>
#endif
typedef struct _SwapChainBuffers {
VkImage image;
VkImageView view;
} SwapChainBuffer;
class VulkanSwapChain
{
private:
VkInstance instance;
VkDevice device;
VkPhysicalDevice physicalDevice;
VkSurfaceKHR surface;
// Function pointers
PFN_vkGetPhysicalDeviceSurfaceSupportKHR fpGetPhysicalDeviceSurfaceSupportKHR;
PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR fpGetPhysicalDeviceSurfaceCapabilitiesKHR;
PFN_vkGetPhysicalDeviceSurfaceFormatsKHR fpGetPhysicalDeviceSurfaceFormatsKHR;
PFN_vkGetPhysicalDeviceSurfacePresentModesKHR fpGetPhysicalDeviceSurfacePresentModesKHR;
PFN_vkCreateSwapchainKHR fpCreateSwapchainKHR;
PFN_vkDestroySwapchainKHR fpDestroySwapchainKHR;
PFN_vkGetSwapchainImagesKHR fpGetSwapchainImagesKHR;
PFN_vkAcquireNextImageKHR fpAcquireNextImageKHR;
PFN_vkQueuePresentKHR fpQueuePresentKHR;
public:
VkFormat colorFormat;
VkColorSpaceKHR colorSpace;
VkSwapchainKHR swapChain = VK_NULL_HANDLE;
uint32_t imageCount;
std::vector<VkImage> images;
std::vector<SwapChainBuffer> buffers;
uint32_t queueNodeIndex = UINT32_MAX;
#if defined(VK_USE_PLATFORM_WIN32_KHR)
void initSurface(void* platformHandle, void* platformWindow);
#elif defined(VK_USE_PLATFORM_ANDROID_KHR)
void initSurface(ANativeWindow* window);
#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT)
void initSurface(IDirectFB* dfb, IDirectFBSurface* window);
#elif defined(VK_USE_PLATFORM_WAYLAND_KHR)
void initSurface(wl_display* display, wl_surface* window);
#elif defined(VK_USE_PLATFORM_XCB_KHR)
void initSurface(xcb_connection_t* connection, xcb_window_t window);
#elif (defined(VK_USE_PLATFORM_IOS_MVK) || defined(VK_USE_PLATFORM_MACOS_MVK))
void initSurface(void* view);
#elif (defined(_DIRECT2DISPLAY) || defined(VK_USE_PLATFORM_HEADLESS_EXT))
void initSurface(uint32_t width, uint32_t height);
#if defined(_DIRECT2DISPLAY)
void createDirect2DisplaySurface(uint32_t width, uint32_t height);
#endif
#endif
void connect(VkInstance instance, VkPhysicalDevice physicalDevice, VkDevice device);
void create(uint32_t* width, uint32_t* height, bool vsync = false, bool fullscreen = false);
VkResult acquireNextImage(VkSemaphore presentCompleteSemaphore, uint32_t* imageIndex);
VkResult queuePresent(VkQueue queue, uint32_t imageIndex, VkSemaphore waitSemaphore = VK_NULL_HANDLE);
void cleanup();
};

View File

@ -1,660 +0,0 @@
/*
* Class wrapping access to the swap chain
*
* A swap chain is a collection of framebuffers used for rendering and presentation to the windowing system
*
* Copyright (C) 2016-2017 by Sascha Willems - www.saschawillems.de
*
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
*/
#pragma once
#include <stdlib.h>
#include <string>
#include <assert.h>
#include <stdio.h>
#include <vector>
#include <vulkan/vulkan.h>
#include "VulkanTools.h"
typedef struct _SwapChainBuffers {
VkImage image;
VkImageView view;
} SwapChainBuffer;
class VulkanSwapChain
{
private:
VkInstance instance;
VkDevice device;
VkPhysicalDevice physicalDevice;
VkSurfaceKHR surface = VK_NULL_HANDLE;
// Function pointers
PFN_vkGetPhysicalDeviceSurfaceSupportKHR fpGetPhysicalDeviceSurfaceSupportKHR;
PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR fpGetPhysicalDeviceSurfaceCapabilitiesKHR;
PFN_vkGetPhysicalDeviceSurfaceFormatsKHR fpGetPhysicalDeviceSurfaceFormatsKHR;
PFN_vkGetPhysicalDeviceSurfacePresentModesKHR fpGetPhysicalDeviceSurfacePresentModesKHR;
PFN_vkCreateSwapchainKHR fpCreateSwapchainKHR;
PFN_vkDestroySwapchainKHR fpDestroySwapchainKHR;
PFN_vkGetSwapchainImagesKHR fpGetSwapchainImagesKHR;
PFN_vkAcquireNextImageKHR fpAcquireNextImageKHR;
PFN_vkQueuePresentKHR fpQueuePresentKHR;
public:
VkFormat colorFormat;
VkColorSpaceKHR colorSpace;
VkSwapchainKHR swapChain = VK_NULL_HANDLE;
uint32_t imageCount;
std::vector<VkImage> images;
std::vector<SwapChainBuffer> buffers;
VkExtent2D extent = {};
uint32_t queueNodeIndex = UINT32_MAX;
/** @brief Creates the platform specific surface abstraction of the native platform window used for presentation */
#if defined(VK_USE_PLATFORM_WIN32_KHR)
void initSurface(void* platformHandle, void* platformWindow)
#elif defined(VK_USE_PLATFORM_ANDROID_KHR)
void initSurface(ANativeWindow* window)
#elif defined(VK_USE_PLATFORM_WAYLAND_KHR)
void initSurface(wl_display *display, wl_surface *window)
#elif defined(VK_USE_PLATFORM_XCB_KHR)
void initSurface(xcb_connection_t* connection, xcb_window_t window)
#elif (defined(VK_USE_PLATFORM_IOS_MVK) || defined(VK_USE_PLATFORM_MACOS_MVK))
void initSurface(void* view)
#elif defined(_DIRECT2DISPLAY)
void initSurface(uint32_t width, uint32_t height)
#endif
{
VkResult err = VK_SUCCESS;
// Create the os-specific surface
#if defined(VK_USE_PLATFORM_WIN32_KHR)
VkWin32SurfaceCreateInfoKHR surfaceCreateInfo = {};
surfaceCreateInfo.sType = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR;
surfaceCreateInfo.hinstance = (HINSTANCE)platformHandle;
surfaceCreateInfo.hwnd = (HWND)platformWindow;
err = vkCreateWin32SurfaceKHR(instance, &surfaceCreateInfo, nullptr, &surface);
#elif defined(VK_USE_PLATFORM_ANDROID_KHR)
VkAndroidSurfaceCreateInfoKHR surfaceCreateInfo = {};
surfaceCreateInfo.sType = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR;
surfaceCreateInfo.window = window;
err = vkCreateAndroidSurfaceKHR(instance, &surfaceCreateInfo, NULL, &surface);
#elif defined(VK_USE_PLATFORM_IOS_MVK)
VkIOSSurfaceCreateInfoMVK surfaceCreateInfo = {};
surfaceCreateInfo.sType = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK;
surfaceCreateInfo.pNext = NULL;
surfaceCreateInfo.flags = 0;
surfaceCreateInfo.pView = view;
err = vkCreateIOSSurfaceMVK(instance, &surfaceCreateInfo, nullptr, &surface);
#elif defined(VK_USE_PLATFORM_MACOS_MVK)
VkMacOSSurfaceCreateInfoMVK surfaceCreateInfo = {};
surfaceCreateInfo.sType = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK;
surfaceCreateInfo.pNext = NULL;
surfaceCreateInfo.flags = 0;
surfaceCreateInfo.pView = view;
err = vkCreateMacOSSurfaceMVK(instance, &surfaceCreateInfo, NULL, &surface);
#elif defined(_DIRECT2DISPLAY)
createDirect2DisplaySurface(width, height);
#elif defined(VK_USE_PLATFORM_WAYLAND_KHR)
VkWaylandSurfaceCreateInfoKHR surfaceCreateInfo = {};
surfaceCreateInfo.sType = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR;
surfaceCreateInfo.display = display;
surfaceCreateInfo.surface = window;
err = vkCreateWaylandSurfaceKHR(instance, &surfaceCreateInfo, nullptr, &surface);
#elif defined(VK_USE_PLATFORM_XCB_KHR)
VkXcbSurfaceCreateInfoKHR surfaceCreateInfo = {};
surfaceCreateInfo.sType = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR;
surfaceCreateInfo.connection = connection;
surfaceCreateInfo.window = window;
err = vkCreateXcbSurfaceKHR(instance, &surfaceCreateInfo, nullptr, &surface);
#endif
if (err != VK_SUCCESS) {
std::cerr << "Could not create surface!" << std::endl;
exit(err);
}
// Get available queue family properties
uint32_t queueCount;
vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, &queueCount, NULL);
assert(queueCount >= 1);
std::vector<VkQueueFamilyProperties> queueProps(queueCount);
vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, &queueCount, queueProps.data());
// Iterate over each queue to learn whether it supports presenting:
// Find a queue with present support
// Will be used to present the swap chain images to the windowing system
std::vector<VkBool32> supportsPresent(queueCount);
for (uint32_t i = 0; i < queueCount; i++)
{
fpGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, i, surface, &supportsPresent[i]);
}
// Search for a graphics and a present queue in the array of queue
// families, try to find one that supports both
uint32_t graphicsQueueNodeIndex = UINT32_MAX;
uint32_t presentQueueNodeIndex = UINT32_MAX;
for (uint32_t i = 0; i < queueCount; i++)
{
if ((queueProps[i].queueFlags & VK_QUEUE_GRAPHICS_BIT) != 0)
{
if (graphicsQueueNodeIndex == UINT32_MAX)
{
graphicsQueueNodeIndex = i;
}
if (supportsPresent[i] == VK_TRUE)
{
graphicsQueueNodeIndex = i;
presentQueueNodeIndex = i;
break;
}
}
}
if (presentQueueNodeIndex == UINT32_MAX)
{
// If there's no queue that supports both present and graphics
// try to find a separate present queue
for (uint32_t i = 0; i < queueCount; ++i)
{
if (supportsPresent[i] == VK_TRUE)
{
presentQueueNodeIndex = i;
break;
}
}
}
// Exit if either a graphics or a presenting queue hasn't been found
if (graphicsQueueNodeIndex == UINT32_MAX || presentQueueNodeIndex == UINT32_MAX) {
std::cerr << "Could not find a graphics and/or presenting queue!" << std::endl;
exit(-1);
}
// todo : Add support for separate graphics and presenting queue
if (graphicsQueueNodeIndex != presentQueueNodeIndex) {
std::cerr << "Separate graphics and presenting queues are not supported yet!" << std::endl;
exit(-1);
}
queueNodeIndex = graphicsQueueNodeIndex;
// Get list of supported surface formats
uint32_t formatCount;
VK_CHECK_RESULT(fpGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, &formatCount, NULL));
assert(formatCount > 0);
std::vector<VkSurfaceFormatKHR> surfaceFormats(formatCount);
VK_CHECK_RESULT(fpGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, &formatCount, surfaceFormats.data()));
// If the surface format list only includes one entry with VK_FORMAT_UNDEFINED,
// there is no preferered format, so we assume VK_FORMAT_B8G8R8A8_UNORM
if ((formatCount == 1) && (surfaceFormats[0].format == VK_FORMAT_UNDEFINED))
{
colorFormat = VK_FORMAT_B8G8R8A8_UNORM;
colorSpace = surfaceFormats[0].colorSpace;
}
else
{
// iterate over the list of available surface format and
// check for the presence of VK_FORMAT_B8G8R8A8_UNORM
bool found_B8G8R8A8_UNORM = false;
for (auto&& surfaceFormat : surfaceFormats)
{
// Prefer SRGB
if (surfaceFormat.format == VK_FORMAT_B8G8R8A8_SRGB)
{
colorFormat = surfaceFormat.format;
colorSpace = surfaceFormat.colorSpace;
found_B8G8R8A8_UNORM = true;
break;
}
//if (surfaceFormat.format == VK_FORMAT_B8G8R8A8_UNORM)
//{
// colorFormat = surfaceFormat.format;
// colorSpace = surfaceFormat.colorSpace;
// found_B8G8R8A8_UNORM = true;
// break;
//}
}
// in case VK_FORMAT_B8G8R8A8_UNORM is not available
// select the first available color format
if (!found_B8G8R8A8_UNORM)
{
colorFormat = surfaceFormats[0].format;
colorSpace = surfaceFormats[0].colorSpace;
}
}
}
/**
* Set instance, physical and logical device to use for the swapchain and get all required function pointers
*
* @param instance Vulkan instance to use
* @param physicalDevice Physical device used to query properties and formats relevant to the swapchain
* @param device Logical representation of the device to create the swapchain for
*
*/
void connect(VkInstance instance, VkPhysicalDevice physicalDevice, VkDevice device)
{
this->instance = instance;
this->physicalDevice = physicalDevice;
this->device = device;
GET_INSTANCE_PROC_ADDR(instance, GetPhysicalDeviceSurfaceSupportKHR);
GET_INSTANCE_PROC_ADDR(instance, GetPhysicalDeviceSurfaceCapabilitiesKHR);
GET_INSTANCE_PROC_ADDR(instance, GetPhysicalDeviceSurfaceFormatsKHR);
GET_INSTANCE_PROC_ADDR(instance, GetPhysicalDeviceSurfacePresentModesKHR);
GET_DEVICE_PROC_ADDR(device, CreateSwapchainKHR);
GET_DEVICE_PROC_ADDR(device, DestroySwapchainKHR);
GET_DEVICE_PROC_ADDR(device, GetSwapchainImagesKHR);
GET_DEVICE_PROC_ADDR(device, AcquireNextImageKHR);
GET_DEVICE_PROC_ADDR(device, QueuePresentKHR);
}
/**
* Create the swapchain and get it's images with given width and height
*
* @param width Pointer to the width of the swapchain (may be adjusted to fit the requirements of the swapchain)
* @param height Pointer to the height of the swapchain (may be adjusted to fit the requirements of the swapchain)
* @param vsync (Optional) Can be used to force vsync'd rendering (by using VK_PRESENT_MODE_FIFO_KHR as presentation mode)
*/
void create(uint32_t *width, uint32_t *height, bool vsync = false)
{
VkSwapchainKHR oldSwapchain = swapChain;
// Get physical device surface properties and formats
VkSurfaceCapabilitiesKHR surfCaps;
VK_CHECK_RESULT(fpGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, &surfCaps));
// Get available present modes
uint32_t presentModeCount;
VK_CHECK_RESULT(fpGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, &presentModeCount, NULL));
assert(presentModeCount > 0);
std::vector<VkPresentModeKHR> presentModes(presentModeCount);
VK_CHECK_RESULT(fpGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, &presentModeCount, presentModes.data()));
// If width (and height) equals the special value 0xFFFFFFFF, the size of the surface will be set by the swapchain
if (surfCaps.currentExtent.width == (uint32_t)-1)
{
// If the surface size is undefined, the size is set to
// the size of the images requested.
extent.width = *width;
extent.height = *height;
}
else
{
// If the surface size is defined, the swap chain size must match
extent = surfCaps.currentExtent;
*width = surfCaps.currentExtent.width;
*height = surfCaps.currentExtent.height;
}
// Select a present mode for the swapchain
// The VK_PRESENT_MODE_FIFO_KHR mode must always be present as per spec
// This mode waits for the vertical blank ("v-sync")
VkPresentModeKHR swapchainPresentMode = VK_PRESENT_MODE_FIFO_KHR;
// If v-sync is not requested, try to find a mailbox mode
// It's the lowest latency non-tearing present mode available
if (!vsync)
{
for (size_t i = 0; i < presentModeCount; i++)
{
if (presentModes[i] == VK_PRESENT_MODE_MAILBOX_KHR)
{
swapchainPresentMode = VK_PRESENT_MODE_MAILBOX_KHR;
break;
}
if ((swapchainPresentMode != VK_PRESENT_MODE_MAILBOX_KHR) && (presentModes[i] == VK_PRESENT_MODE_IMMEDIATE_KHR))
{
swapchainPresentMode = VK_PRESENT_MODE_IMMEDIATE_KHR;
}
}
}
// Determine the number of images
uint32_t desiredNumberOfSwapchainImages = surfCaps.minImageCount + 1;
if ((surfCaps.maxImageCount > 0) && (desiredNumberOfSwapchainImages > surfCaps.maxImageCount))
{
desiredNumberOfSwapchainImages = surfCaps.maxImageCount;
}
// Find the transformation of the surface
VkSurfaceTransformFlagsKHR preTransform;
if (surfCaps.supportedTransforms & VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR)
{
// We prefer a non-rotated transform
preTransform = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR;
}
else
{
preTransform = surfCaps.currentTransform;
}
// Find a supported composite alpha format (not all devices support alpha opaque)
VkCompositeAlphaFlagBitsKHR compositeAlpha = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR;
// Simply select the first composite alpha format available
std::vector<VkCompositeAlphaFlagBitsKHR> compositeAlphaFlags = {
VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,
VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,
VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,
VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR,
};
for (auto& compositeAlphaFlag : compositeAlphaFlags) {
if (surfCaps.supportedCompositeAlpha & compositeAlphaFlag) {
compositeAlpha = compositeAlphaFlag;
break;
};
}
VkSwapchainCreateInfoKHR swapchainCI = {};
swapchainCI.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR;
swapchainCI.pNext = NULL;
swapchainCI.surface = surface;
swapchainCI.minImageCount = desiredNumberOfSwapchainImages;
swapchainCI.imageFormat = colorFormat;
swapchainCI.imageColorSpace = colorSpace;
swapchainCI.imageExtent = { extent.width, extent.height };
swapchainCI.imageUsage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
swapchainCI.preTransform = (VkSurfaceTransformFlagBitsKHR)preTransform;
swapchainCI.imageArrayLayers = 1;
swapchainCI.imageSharingMode = VK_SHARING_MODE_EXCLUSIVE;
swapchainCI.queueFamilyIndexCount = 0;
swapchainCI.pQueueFamilyIndices = NULL;
swapchainCI.presentMode = swapchainPresentMode;
swapchainCI.oldSwapchain = oldSwapchain;
// Setting clipped to VK_TRUE allows the implementation to discard rendering outside of the surface area
swapchainCI.clipped = VK_TRUE;
swapchainCI.compositeAlpha = compositeAlpha;
// Set additional usage flag for blitting from the swapchain images if supported
VkFormatProperties formatProps;
vkGetPhysicalDeviceFormatProperties(physicalDevice, colorFormat, &formatProps);
if ((formatProps.optimalTilingFeatures & VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR) || (formatProps.optimalTilingFeatures & VK_FORMAT_FEATURE_BLIT_SRC_BIT)) {
swapchainCI.imageUsage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT;
}
VK_CHECK_RESULT(fpCreateSwapchainKHR(device, &swapchainCI, nullptr, &swapChain));
// If an existing swap chain is re-created, destroy the old swap chain
// This also cleans up all the presentable images
if (oldSwapchain != VK_NULL_HANDLE)
{
for (uint32_t i = 0; i < imageCount; i++)
{
vkDestroyImageView(device, buffers[i].view, nullptr);
}
fpDestroySwapchainKHR(device, oldSwapchain, nullptr);
}
VK_CHECK_RESULT(fpGetSwapchainImagesKHR(device, swapChain, &imageCount, NULL));
// Get the swap chain images
images.resize(imageCount);
VK_CHECK_RESULT(fpGetSwapchainImagesKHR(device, swapChain, &imageCount, images.data()));
// Get the swap chain buffers containing the image and imageview
buffers.resize(imageCount);
for (uint32_t i = 0; i < imageCount; i++)
{
VkImageViewCreateInfo colorAttachmentView = {};
colorAttachmentView.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
colorAttachmentView.pNext = NULL;
colorAttachmentView.format = colorFormat;
colorAttachmentView.components = {
VK_COMPONENT_SWIZZLE_R,
VK_COMPONENT_SWIZZLE_G,
VK_COMPONENT_SWIZZLE_B,
VK_COMPONENT_SWIZZLE_A
};
colorAttachmentView.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
colorAttachmentView.subresourceRange.baseMipLevel = 0;
colorAttachmentView.subresourceRange.levelCount = 1;
colorAttachmentView.subresourceRange.baseArrayLayer = 0;
colorAttachmentView.subresourceRange.layerCount = 1;
colorAttachmentView.viewType = VK_IMAGE_VIEW_TYPE_2D;
colorAttachmentView.flags = 0;
buffers[i].image = images[i];
colorAttachmentView.image = buffers[i].image;
VK_CHECK_RESULT(vkCreateImageView(device, &colorAttachmentView, nullptr, &buffers[i].view));
}
}
/**
* Acquires the next image in the swap chain
*
* @param presentCompleteSemaphore (Optional) Semaphore that is signaled when the image is ready for use
* @param imageIndex Pointer to the image index that will be increased if the next image could be acquired
*
* @note The function will always wait until the next image has been acquired by setting timeout to UINT64_MAX
*
* @return VkResult of the image acquisition
*/
VkResult acquireNextImage(VkSemaphore presentCompleteSemaphore, uint32_t *imageIndex)
{
if (swapChain == VK_NULL_HANDLE) {
// Probably acquireNextImage() is called just after cleanup() (e.g. window has been terminated on Android).
// todo : Use a dedicated error code.
return VK_ERROR_OUT_OF_DATE_KHR;
}
// By setting timeout to UINT64_MAX we will always wait until the next image has been acquired or an actual error is thrown
// With that we don't have to handle VK_NOT_READY
return fpAcquireNextImageKHR(device, swapChain, UINT64_MAX, presentCompleteSemaphore, (VkFence)nullptr, imageIndex);
}
/**
* Queue an image for presentation
*
* @param queue Presentation queue for presenting the image
* @param imageIndex Index of the swapchain image to queue for presentation
* @param waitSemaphore (Optional) Semaphore that is waited on before the image is presented (only used if != VK_NULL_HANDLE)
*
* @return VkResult of the queue presentation
*/
VkResult queuePresent(VkQueue queue, uint32_t imageIndex, VkSemaphore waitSemaphore = VK_NULL_HANDLE)
{
VkPresentInfoKHR presentInfo = {};
presentInfo.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR;
presentInfo.pNext = NULL;
presentInfo.swapchainCount = 1;
presentInfo.pSwapchains = &swapChain;
presentInfo.pImageIndices = &imageIndex;
// Check if a wait semaphore has been specified to wait for before presenting the image
if (waitSemaphore != VK_NULL_HANDLE)
{
presentInfo.pWaitSemaphores = &waitSemaphore;
presentInfo.waitSemaphoreCount = 1;
}
return fpQueuePresentKHR(queue, &presentInfo);
}
/**
* Destroy and free Vulkan resources used for the swapchain
*/
void cleanup()
{
if (swapChain != VK_NULL_HANDLE)
{
for (uint32_t i = 0; i < imageCount; i++)
{
vkDestroyImageView(device, buffers[i].view, nullptr);
}
}
if (surface != VK_NULL_HANDLE)
{
fpDestroySwapchainKHR(device, swapChain, nullptr);
vkDestroySurfaceKHR(instance, surface, nullptr);
}
surface = VK_NULL_HANDLE;
swapChain = VK_NULL_HANDLE;
}
#if defined(_DIRECT2DISPLAY)
void exitFatal(const std::string& message, int32_t exitCode)
{
#if defined(_WIN32)
if (!errorModeSilent) {
MessageBox(NULL, message.c_str(), NULL, MB_OK | MB_ICONERROR);
}
#elif defined(__ANDROID__)
LOGE("Fatal error: %s", message.c_str());
vks::android::showAlert(message.c_str());
#endif
std::cerr << message << "\n";
#if !defined(__ANDROID__)
exit(exitCode);
#endif
}
/**
* Create direct to display surface
*/
void createDirect2DisplaySurface(uint32_t width, uint32_t height)
{
uint32_t displayPropertyCount;
// Get display property
vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, &displayPropertyCount, NULL);
VkDisplayPropertiesKHR* pDisplayProperties = new VkDisplayPropertiesKHR[displayPropertyCount];
vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, &displayPropertyCount, pDisplayProperties);
// Get plane property
uint32_t planePropertyCount;
vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, &planePropertyCount, NULL);
VkDisplayPlanePropertiesKHR* pPlaneProperties = new VkDisplayPlanePropertiesKHR[planePropertyCount];
vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, &planePropertyCount, pPlaneProperties);
VkDisplayKHR display = VK_NULL_HANDLE;
VkDisplayModeKHR displayMode;
VkDisplayModePropertiesKHR* pModeProperties;
bool foundMode = false;
for(uint32_t i = 0; i < displayPropertyCount;++i)
{
display = pDisplayProperties[i].display;
uint32_t modeCount;
vkGetDisplayModePropertiesKHR(physicalDevice, display, &modeCount, NULL);
pModeProperties = new VkDisplayModePropertiesKHR[modeCount];
vkGetDisplayModePropertiesKHR(physicalDevice, display, &modeCount, pModeProperties);
for (uint32_t j = 0; j < modeCount; ++j)
{
const VkDisplayModePropertiesKHR* mode = &pModeProperties[j];
if (mode->parameters.visibleRegion.width == width && mode->parameters.visibleRegion.height == height)
{
displayMode = mode->displayMode;
foundMode = true;
break;
}
}
if (foundMode)
{
break;
}
delete [] pModeProperties;
}
if(!foundMode)
{
exitFatal("Can't find a display and a display mode!", -1);
return;
}
// Search for a best plane we can use
uint32_t bestPlaneIndex = UINT32_MAX;
VkDisplayKHR* pDisplays = NULL;
for(uint32_t i = 0; i < planePropertyCount; i++)
{
uint32_t planeIndex=i;
uint32_t displayCount;
vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, &displayCount, NULL);
if (pDisplays)
{
delete [] pDisplays;
}
pDisplays = new VkDisplayKHR[displayCount];
vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, &displayCount, pDisplays);
// Find a display that matches the current plane
bestPlaneIndex = UINT32_MAX;
for(uint32_t j = 0; j < displayCount; j++)
{
if(display == pDisplays[j])
{
bestPlaneIndex = i;
break;
}
}
if(bestPlaneIndex != UINT32_MAX)
{
break;
}
}
if(bestPlaneIndex == UINT32_MAX)
{
exitFatal("Can't find a plane for displaying!", -1);
return;
}
VkDisplayPlaneCapabilitiesKHR planeCap;
vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, displayMode, bestPlaneIndex, &planeCap);
VkDisplayPlaneAlphaFlagBitsKHR alphaMode = (VkDisplayPlaneAlphaFlagBitsKHR)0;
if (planeCap.supportedAlpha & VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR)
{
alphaMode = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR;
}
else if (planeCap.supportedAlpha & VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR)
{
alphaMode = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR;
}
else if (planeCap.supportedAlpha & VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR)
{
alphaMode = VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR;
}
else if (planeCap.supportedAlpha & VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR)
{
alphaMode = VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR;
}
VkDisplaySurfaceCreateInfoKHR surfaceInfo{};
surfaceInfo.sType = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR;
surfaceInfo.pNext = NULL;
surfaceInfo.flags = 0;
surfaceInfo.displayMode = displayMode;
surfaceInfo.planeIndex = bestPlaneIndex;
surfaceInfo.planeStackIndex = pPlaneProperties[bestPlaneIndex].currentStackIndex;
surfaceInfo.transform = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR;
surfaceInfo.globalAlpha = 1.0;
surfaceInfo.alphaMode = alphaMode;
surfaceInfo.imageExtent.width = width;
surfaceInfo.imageExtent.height = height;
VkResult result = vkCreateDisplayPlaneSurfaceKHR(instance, &surfaceInfo, NULL, &surface);
if (result !=VK_SUCCESS) {
exitFatal("Failed to create surface!", result);
}
delete[] pDisplays;
delete[] pModeProperties;
delete[] pDisplayProperties;
delete[] pPlaneProperties;
}
#endif
};

View File

@ -19,8 +19,8 @@
#include <ktxvulkan.h>
#include "VulkanBuffer.h"
#include "VulkanDevice.hpp"
//#include "VulkanTools.h"
#include "VulkanDevice.h"
#include "VulkanTools.h"
#if defined(__ANDROID__)
# include <android/asset_manager.h>

View File

@ -1,630 +0,0 @@
/*
* Vulkan texture loader
*
* Copyright(C) 2016-2017 by Sascha Willems - www.saschawillems.de
*
* This code is licensed under the MIT license(MIT) (http://opensource.org/licenses/MIT)
*/
#pragma once
#include <stdlib.h>
#include <string>
#include <fstream>
#include <vector>
#include "vulkan/vulkan.h"
#include "VulkanTools.h"
#include "VulkanDevice.hpp"
#define GLM_ENABLE_EXPERIMENTAL
#include <gli/gli.hpp>
namespace vks
{
class Texture {
public:
vks::VulkanDevice *device;
VkImage image = VK_NULL_HANDLE;
VkImageLayout imageLayout;
VkDeviceMemory deviceMemory;
VkImageView view;
uint32_t width, height;
uint32_t mipLevels;
uint32_t layerCount;
VkDescriptorImageInfo descriptor;
VkSampler sampler;
void updateDescriptor()
{
descriptor.sampler = sampler;
descriptor.imageView = view;
descriptor.imageLayout = imageLayout;
}
void destroy()
{
vkDestroyImageView(device->logicalDevice, view, nullptr);
vkDestroyImage(device->logicalDevice, image, nullptr);
if (sampler)
{
vkDestroySampler(device->logicalDevice, sampler, nullptr);
}
vkFreeMemory(device->logicalDevice, deviceMemory, nullptr);
}
};
class Texture2D : public Texture {
public:
void loadFromFile(
std::string filename,
VkFormat format,
vks::VulkanDevice *device,
VkQueue copyQueue,
VkImageUsageFlags imageUsageFlags = VK_IMAGE_USAGE_SAMPLED_BIT,
VkImageLayout imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL)
{
gli::texture2d tex2D(gli::load(filename.c_str()));
assert(!tex2D.empty());
this->device = device;
width = static_cast<uint32_t>(tex2D[0].extent().x);
height = static_cast<uint32_t>(tex2D[0].extent().y);
mipLevels = static_cast<uint32_t>(tex2D.levels());
// Get device properites for the requested texture format
VkFormatProperties formatProperties;
vkGetPhysicalDeviceFormatProperties(device->physicalDevice, format, &formatProperties);
VkMemoryAllocateInfo memAllocInfo{};
memAllocInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;
VkMemoryRequirements memReqs;
// Use a separate command buffer for texture loading
VkCommandBuffer copyCmd = device->createCommandBuffer(VK_COMMAND_BUFFER_LEVEL_PRIMARY, true);
// Create a host-visible staging buffer that contains the raw image data
VkBuffer stagingBuffer;
VkDeviceMemory stagingMemory;
VkBufferCreateInfo bufferCreateInfo{};
bufferCreateInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
bufferCreateInfo.size = tex2D.size();
// This buffer is used as a transfer source for the buffer copy
bufferCreateInfo.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT;
bufferCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
VK_CHECK_RESULT(vkCreateBuffer(device->logicalDevice, &bufferCreateInfo, nullptr, &stagingBuffer));
// Get memory requirements for the staging buffer (alignment, memory type bits)
vkGetBufferMemoryRequirements(device->logicalDevice, stagingBuffer, &memReqs);
memAllocInfo.allocationSize = memReqs.size;
// Get memory type index for a host visible buffer
memAllocInfo.memoryTypeIndex = device->getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT);
VK_CHECK_RESULT(vkAllocateMemory(device->logicalDevice, &memAllocInfo, nullptr, &stagingMemory));
VK_CHECK_RESULT(vkBindBufferMemory(device->logicalDevice, stagingBuffer, stagingMemory, 0));
// Copy texture data into staging buffer
uint8_t *data;
VK_CHECK_RESULT(vkMapMemory(device->logicalDevice, stagingMemory, 0, memReqs.size, 0, (void **)&data));
memcpy(data, tex2D.data(), tex2D.size());
vkUnmapMemory(device->logicalDevice, stagingMemory);
// Setup buffer copy regions for each mip level
std::vector<VkBufferImageCopy> bufferCopyRegions;
uint32_t offset = 0;
for (uint32_t i = 0; i < mipLevels; i++)
{
VkBufferImageCopy bufferCopyRegion = {};
bufferCopyRegion.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
bufferCopyRegion.imageSubresource.mipLevel = i;
bufferCopyRegion.imageSubresource.baseArrayLayer = 0;
bufferCopyRegion.imageSubresource.layerCount = 1;
bufferCopyRegion.imageExtent.width = static_cast<uint32_t>(tex2D[i].extent().x);
bufferCopyRegion.imageExtent.height = static_cast<uint32_t>(tex2D[i].extent().y);
bufferCopyRegion.imageExtent.depth = 1;
bufferCopyRegion.bufferOffset = offset;
bufferCopyRegions.push_back(bufferCopyRegion);
offset += static_cast<uint32_t>(tex2D[i].size());
}
// Create optimal tiled target image
VkImageCreateInfo imageCreateInfo{};
imageCreateInfo.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO;
imageCreateInfo.imageType = VK_IMAGE_TYPE_2D;
imageCreateInfo.format = format;
imageCreateInfo.mipLevels = mipLevels;
imageCreateInfo.arrayLayers = 1;
imageCreateInfo.samples = VK_SAMPLE_COUNT_1_BIT;
imageCreateInfo.tiling = VK_IMAGE_TILING_OPTIMAL;
imageCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
imageCreateInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
imageCreateInfo.extent = { width, height, 1 };
imageCreateInfo.usage = imageUsageFlags;
// Ensure that the TRANSFER_DST bit is set for staging
if (!(imageCreateInfo.usage & VK_IMAGE_USAGE_TRANSFER_DST_BIT))
{
imageCreateInfo.usage |= VK_IMAGE_USAGE_TRANSFER_DST_BIT;
}
VK_CHECK_RESULT(vkCreateImage(device->logicalDevice, &imageCreateInfo, nullptr, &image));
vkGetImageMemoryRequirements(device->logicalDevice, image, &memReqs);
memAllocInfo.allocationSize = memReqs.size;
memAllocInfo.memoryTypeIndex = device->getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT);
VK_CHECK_RESULT(vkAllocateMemory(device->logicalDevice, &memAllocInfo, nullptr, &deviceMemory));
VK_CHECK_RESULT(vkBindImageMemory(device->logicalDevice, image, deviceMemory, 0));
VkImageSubresourceRange subresourceRange = {};
subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
subresourceRange.baseMipLevel = 0;
subresourceRange.levelCount = mipLevels;
subresourceRange.layerCount = 1;
// Image barrier for optimal image (target)
// Optimal image will be used as destination for the copy
{
VkImageMemoryBarrier imageMemoryBarrier{};
imageMemoryBarrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
imageMemoryBarrier.oldLayout = VK_IMAGE_LAYOUT_UNDEFINED;
imageMemoryBarrier.newLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
imageMemoryBarrier.srcAccessMask = 0;
imageMemoryBarrier.dstAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
imageMemoryBarrier.image = image;
imageMemoryBarrier.subresourceRange = subresourceRange;
vkCmdPipelineBarrier(copyCmd, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, 0, 0, nullptr, 0, nullptr, 1, &imageMemoryBarrier);
}
// Copy mip levels from staging buffer
vkCmdCopyBufferToImage(
copyCmd,
stagingBuffer,
image,
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
static_cast<uint32_t>(bufferCopyRegions.size()),
bufferCopyRegions.data()
);
// Change texture image layout to shader read after all mip levels have been copied
this->imageLayout = imageLayout;
{
VkImageMemoryBarrier imageMemoryBarrier{};
imageMemoryBarrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
imageMemoryBarrier.oldLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
imageMemoryBarrier.newLayout = imageLayout;
imageMemoryBarrier.srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
imageMemoryBarrier.dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT;
imageMemoryBarrier.image = image;
imageMemoryBarrier.subresourceRange = subresourceRange;
vkCmdPipelineBarrier(copyCmd, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, 0, 0, nullptr, 0, nullptr, 1, &imageMemoryBarrier);
}
device->flushCommandBuffer(copyCmd, copyQueue);
// Clean up staging resources
vkFreeMemory(device->logicalDevice, stagingMemory, nullptr);
vkDestroyBuffer(device->logicalDevice, stagingBuffer, nullptr);
VkSamplerCreateInfo samplerCreateInfo{};
samplerCreateInfo.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
samplerCreateInfo.magFilter = VK_FILTER_LINEAR;
samplerCreateInfo.minFilter = VK_FILTER_LINEAR;
samplerCreateInfo.mipmapMode = VK_SAMPLER_MIPMAP_MODE_LINEAR;
samplerCreateInfo.addressModeU = VK_SAMPLER_ADDRESS_MODE_REPEAT;
samplerCreateInfo.addressModeV = VK_SAMPLER_ADDRESS_MODE_REPEAT;
samplerCreateInfo.addressModeW = VK_SAMPLER_ADDRESS_MODE_REPEAT;
samplerCreateInfo.mipLodBias = 0.0f;
samplerCreateInfo.compareOp = VK_COMPARE_OP_NEVER;
samplerCreateInfo.minLod = 0.0f;
samplerCreateInfo.maxLod = (float)mipLevels;
samplerCreateInfo.maxAnisotropy = device->enabledFeatures.samplerAnisotropy ? device->properties.limits.maxSamplerAnisotropy : 1.0f;
samplerCreateInfo.anisotropyEnable = device->enabledFeatures.samplerAnisotropy;
samplerCreateInfo.borderColor = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE;
VK_CHECK_RESULT(vkCreateSampler(device->logicalDevice, &samplerCreateInfo, nullptr, &sampler));
VkImageViewCreateInfo viewCreateInfo{};
viewCreateInfo.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
viewCreateInfo.viewType = VK_IMAGE_VIEW_TYPE_2D;
viewCreateInfo.format = format;
viewCreateInfo.components = { VK_COMPONENT_SWIZZLE_R, VK_COMPONENT_SWIZZLE_G, VK_COMPONENT_SWIZZLE_B, VK_COMPONENT_SWIZZLE_A };
viewCreateInfo.subresourceRange = { VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1 };
viewCreateInfo.subresourceRange.levelCount = mipLevels;
viewCreateInfo.image = image;
VK_CHECK_RESULT(vkCreateImageView(device->logicalDevice, &viewCreateInfo, nullptr, &view));
updateDescriptor();
}
void loadFromBuffer(
void* buffer,
VkDeviceSize bufferSize,
VkFormat format,
uint32_t width,
uint32_t height,
vks::VulkanDevice *device,
VkQueue copyQueue,
VkFilter filter = VK_FILTER_LINEAR,
VkImageUsageFlags imageUsageFlags = VK_IMAGE_USAGE_SAMPLED_BIT,
VkImageLayout imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL)
{
assert(buffer);
this->device = device;
width = width;
height = height;
mipLevels = 1;
VkMemoryAllocateInfo memAllocInfo{};
memAllocInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;
VkMemoryRequirements memReqs;
// Use a separate command buffer for texture loading
VkCommandBuffer copyCmd = device->createCommandBuffer(VK_COMMAND_BUFFER_LEVEL_PRIMARY, true);
// Create a host-visible staging buffer that contains the raw image data
VkBuffer stagingBuffer;
VkDeviceMemory stagingMemory;
VkBufferCreateInfo bufferCreateInfo{};
bufferCreateInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
bufferCreateInfo.size = bufferSize;
// This buffer is used as a transfer source for the buffer copy
bufferCreateInfo.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT;
bufferCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
VK_CHECK_RESULT(vkCreateBuffer(device->logicalDevice, &bufferCreateInfo, nullptr, &stagingBuffer));
// Get memory requirements for the staging buffer (alignment, memory type bits)
vkGetBufferMemoryRequirements(device->logicalDevice, stagingBuffer, &memReqs);
memAllocInfo.allocationSize = memReqs.size;
// Get memory type index for a host visible buffer
memAllocInfo.memoryTypeIndex = device->getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT);
VK_CHECK_RESULT(vkAllocateMemory(device->logicalDevice, &memAllocInfo, nullptr, &stagingMemory));
VK_CHECK_RESULT(vkBindBufferMemory(device->logicalDevice, stagingBuffer, stagingMemory, 0));
// Copy texture data into staging buffer
uint8_t *data;
VK_CHECK_RESULT(vkMapMemory(device->logicalDevice, stagingMemory, 0, memReqs.size, 0, (void **)&data));
memcpy(data, buffer, bufferSize);
vkUnmapMemory(device->logicalDevice, stagingMemory);
VkBufferImageCopy bufferCopyRegion = {};
bufferCopyRegion.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
bufferCopyRegion.imageSubresource.mipLevel = 0;
bufferCopyRegion.imageSubresource.baseArrayLayer = 0;
bufferCopyRegion.imageSubresource.layerCount = 1;
bufferCopyRegion.imageExtent.width = width;
bufferCopyRegion.imageExtent.height = height;
bufferCopyRegion.imageExtent.depth = 1;
bufferCopyRegion.bufferOffset = 0;
// Create optimal tiled target image
VkImageCreateInfo imageCreateInfo{};
imageCreateInfo.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO;
imageCreateInfo.imageType = VK_IMAGE_TYPE_2D;
imageCreateInfo.format = format;
imageCreateInfo.mipLevels = mipLevels;
imageCreateInfo.arrayLayers = 1;
imageCreateInfo.samples = VK_SAMPLE_COUNT_1_BIT;
imageCreateInfo.tiling = VK_IMAGE_TILING_OPTIMAL;
imageCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
imageCreateInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
imageCreateInfo.extent = { width, height, 1 };
imageCreateInfo.usage = imageUsageFlags;
// Ensure that the TRANSFER_DST bit is set for staging
if (!(imageCreateInfo.usage & VK_IMAGE_USAGE_TRANSFER_DST_BIT))
{
imageCreateInfo.usage |= VK_IMAGE_USAGE_TRANSFER_DST_BIT;
}
VK_CHECK_RESULT(vkCreateImage(device->logicalDevice, &imageCreateInfo, nullptr, &image));
vkGetImageMemoryRequirements(device->logicalDevice, image, &memReqs);
memAllocInfo.allocationSize = memReqs.size;
memAllocInfo.memoryTypeIndex = device->getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT);
VK_CHECK_RESULT(vkAllocateMemory(device->logicalDevice, &memAllocInfo, nullptr, &deviceMemory));
VK_CHECK_RESULT(vkBindImageMemory(device->logicalDevice, image, deviceMemory, 0));
VkImageSubresourceRange subresourceRange = {};
subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
subresourceRange.baseMipLevel = 0;
subresourceRange.levelCount = mipLevels;
subresourceRange.layerCount = 1;
{
VkImageMemoryBarrier imageMemoryBarrier{};
imageMemoryBarrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
imageMemoryBarrier.oldLayout = VK_IMAGE_LAYOUT_UNDEFINED;
imageMemoryBarrier.newLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
imageMemoryBarrier.srcAccessMask = 0;
imageMemoryBarrier.dstAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
imageMemoryBarrier.image = image;
imageMemoryBarrier.subresourceRange = subresourceRange;
vkCmdPipelineBarrier(copyCmd, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, 0, 0, nullptr, 0, nullptr, 1, &imageMemoryBarrier);
}
vkCmdCopyBufferToImage(
copyCmd,
stagingBuffer,
image,
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
1,
&bufferCopyRegion
);
this->imageLayout = imageLayout;
{
VkImageMemoryBarrier imageMemoryBarrier{};
imageMemoryBarrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
imageMemoryBarrier.oldLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
imageMemoryBarrier.newLayout = imageLayout;
imageMemoryBarrier.srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
imageMemoryBarrier.dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT;
imageMemoryBarrier.image = image;
imageMemoryBarrier.subresourceRange = subresourceRange;
vkCmdPipelineBarrier(copyCmd, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, 0, 0, nullptr, 0, nullptr, 1, &imageMemoryBarrier);
}
device->flushCommandBuffer(copyCmd, copyQueue);
// Clean up staging resources
vkFreeMemory(device->logicalDevice, stagingMemory, nullptr);
vkDestroyBuffer(device->logicalDevice, stagingBuffer, nullptr);
// Create sampler
VkSamplerCreateInfo samplerCreateInfo = {};
samplerCreateInfo.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
samplerCreateInfo.magFilter = filter;
samplerCreateInfo.minFilter = filter;
samplerCreateInfo.mipmapMode = VK_SAMPLER_MIPMAP_MODE_LINEAR;
samplerCreateInfo.addressModeU = VK_SAMPLER_ADDRESS_MODE_REPEAT;
samplerCreateInfo.addressModeV = VK_SAMPLER_ADDRESS_MODE_REPEAT;
samplerCreateInfo.addressModeW = VK_SAMPLER_ADDRESS_MODE_REPEAT;
samplerCreateInfo.mipLodBias = 0.0f;
samplerCreateInfo.compareOp = VK_COMPARE_OP_NEVER;
samplerCreateInfo.minLod = 0.0f;
samplerCreateInfo.maxLod = 0.0f;
samplerCreateInfo.maxAnisotropy = 1.0f;
VK_CHECK_RESULT(vkCreateSampler(device->logicalDevice, &samplerCreateInfo, nullptr, &sampler));
// Create image view
VkImageViewCreateInfo viewCreateInfo = {};
viewCreateInfo.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
viewCreateInfo.pNext = NULL;
viewCreateInfo.viewType = VK_IMAGE_VIEW_TYPE_2D;
viewCreateInfo.format = format;
viewCreateInfo.components = { VK_COMPONENT_SWIZZLE_R, VK_COMPONENT_SWIZZLE_G, VK_COMPONENT_SWIZZLE_B, VK_COMPONENT_SWIZZLE_A };
viewCreateInfo.subresourceRange = { VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1 };
viewCreateInfo.subresourceRange.levelCount = 1;
viewCreateInfo.image = image;
VK_CHECK_RESULT(vkCreateImageView(device->logicalDevice, &viewCreateInfo, nullptr, &view));
// Update descriptor image info member that can be used for setting up descriptor sets
updateDescriptor();
}
};
class TextureCubeMap : public Texture {
public:
void loadFromFile(
std::string filename,
VkFormat format,
vks::VulkanDevice *device,
VkQueue copyQueue,
VkImageUsageFlags imageUsageFlags = VK_IMAGE_USAGE_SAMPLED_BIT,
VkImageLayout imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL)
{
#if defined(__ANDROID__)
// Textures are stored inside the apk on Android (compressed)
// So they need to be loaded via the asset manager
AAsset* asset = AAssetManager_open(androidApp->activity->assetManager, filename.c_str(), AASSET_MODE_STREAMING);
if (!asset) {
LOGE("Could not load texture %s", filename.c_str());
exit(-1);
}
size_t size = AAsset_getLength(asset);
assert(size > 0);
void *textureData = malloc(size);
AAsset_read(asset, textureData, size);
AAsset_close(asset);
gli::texture_cube texCube(gli::load((const char*)textureData, size));
free(textureData);
#else
gli::texture_cube texCube(gli::load(filename));
#endif
assert(!texCube.empty());
this->device = device;
width = static_cast<uint32_t>(texCube.extent().x);
height = static_cast<uint32_t>(texCube.extent().y);
mipLevels = static_cast<uint32_t>(texCube.levels());
VkMemoryAllocateInfo memAllocInfo{};
memAllocInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;
VkMemoryRequirements memReqs;
// Create a host-visible staging buffer that contains the raw image data
VkBuffer stagingBuffer;
VkDeviceMemory stagingMemory;
VkBufferCreateInfo bufferCreateInfo{};
bufferCreateInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
bufferCreateInfo.size = texCube.size();
// This buffer is used as a transfer source for the buffer copy
bufferCreateInfo.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT;
bufferCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
VK_CHECK_RESULT(vkCreateBuffer(device->logicalDevice, &bufferCreateInfo, nullptr, &stagingBuffer));
// Get memory requirements for the staging buffer (alignment, memory type bits)
vkGetBufferMemoryRequirements(device->logicalDevice, stagingBuffer, &memReqs);
memAllocInfo.allocationSize = memReqs.size;
// Get memory type index for a host visible buffer
memAllocInfo.memoryTypeIndex = device->getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT);
VK_CHECK_RESULT(vkAllocateMemory(device->logicalDevice, &memAllocInfo, nullptr, &stagingMemory));
VK_CHECK_RESULT(vkBindBufferMemory(device->logicalDevice, stagingBuffer, stagingMemory, 0));
// Copy texture data into staging buffer
uint8_t *data;
VK_CHECK_RESULT(vkMapMemory(device->logicalDevice, stagingMemory, 0, memReqs.size, 0, (void **)&data));
memcpy(data, texCube.data(), texCube.size());
vkUnmapMemory(device->logicalDevice, stagingMemory);
// Setup buffer copy regions for each face including all of it's miplevels
std::vector<VkBufferImageCopy> bufferCopyRegions;
size_t offset = 0;
for (uint32_t face = 0; face < 6; face++) {
for (uint32_t level = 0; level < mipLevels; level++) {
VkBufferImageCopy bufferCopyRegion = {};
bufferCopyRegion.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
bufferCopyRegion.imageSubresource.mipLevel = level;
bufferCopyRegion.imageSubresource.baseArrayLayer = face;
bufferCopyRegion.imageSubresource.layerCount = 1;
bufferCopyRegion.imageExtent.width = static_cast<uint32_t>(texCube[face][level].extent().x);
bufferCopyRegion.imageExtent.height = static_cast<uint32_t>(texCube[face][level].extent().y);
bufferCopyRegion.imageExtent.depth = 1;
bufferCopyRegion.bufferOffset = offset;
bufferCopyRegions.push_back(bufferCopyRegion);
// Increase offset into staging buffer for next level / face
offset += texCube[face][level].size();
}
}
// Create optimal tiled target image
VkImageCreateInfo imageCreateInfo{};
imageCreateInfo.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO;
imageCreateInfo.imageType = VK_IMAGE_TYPE_2D;
imageCreateInfo.format = format;
imageCreateInfo.mipLevels = mipLevels;
imageCreateInfo.samples = VK_SAMPLE_COUNT_1_BIT;
imageCreateInfo.tiling = VK_IMAGE_TILING_OPTIMAL;
imageCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
imageCreateInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
imageCreateInfo.extent = { width, height, 1 };
imageCreateInfo.usage = imageUsageFlags;
// Ensure that the TRANSFER_DST bit is set for staging
if (!(imageCreateInfo.usage & VK_IMAGE_USAGE_TRANSFER_DST_BIT)) {
imageCreateInfo.usage |= VK_IMAGE_USAGE_TRANSFER_DST_BIT;
}
// Cube faces count as array layers in Vulkan
imageCreateInfo.arrayLayers = 6;
// This flag is required for cube map images
imageCreateInfo.flags = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT;
VK_CHECK_RESULT(vkCreateImage(device->logicalDevice, &imageCreateInfo, nullptr, &image));
vkGetImageMemoryRequirements(device->logicalDevice, image, &memReqs);
memAllocInfo.allocationSize = memReqs.size;
memAllocInfo.memoryTypeIndex = device->getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT);
VK_CHECK_RESULT(vkAllocateMemory(device->logicalDevice, &memAllocInfo, nullptr, &deviceMemory));
VK_CHECK_RESULT(vkBindImageMemory(device->logicalDevice, image, deviceMemory, 0));
// Use a separate command buffer for texture loading
VkCommandBuffer copyCmd = device->createCommandBuffer(VK_COMMAND_BUFFER_LEVEL_PRIMARY, true);
// Image barrier for optimal image (target)
// Set initial layout for all array layers (faces) of the optimal (target) tiled texture
VkImageSubresourceRange subresourceRange = {};
subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
subresourceRange.baseMipLevel = 0;
subresourceRange.levelCount = mipLevels;
subresourceRange.layerCount = 6;
{
VkImageMemoryBarrier imageMemoryBarrier{};
imageMemoryBarrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
imageMemoryBarrier.oldLayout = VK_IMAGE_LAYOUT_UNDEFINED;
imageMemoryBarrier.newLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
imageMemoryBarrier.srcAccessMask = 0;
imageMemoryBarrier.dstAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
imageMemoryBarrier.image = image;
imageMemoryBarrier.subresourceRange = subresourceRange;
vkCmdPipelineBarrier(copyCmd, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, 0, 0, nullptr, 0, nullptr, 1, &imageMemoryBarrier);
}
// Copy the cube map faces from the staging buffer to the optimal tiled image
vkCmdCopyBufferToImage(
copyCmd,
stagingBuffer,
image,
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
static_cast<uint32_t>(bufferCopyRegions.size()),
bufferCopyRegions.data());
// Change texture image layout to shader read after all faces have been copied
this->imageLayout = imageLayout;
{
VkImageMemoryBarrier imageMemoryBarrier{};
imageMemoryBarrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
imageMemoryBarrier.oldLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
imageMemoryBarrier.newLayout = imageLayout;
imageMemoryBarrier.srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
imageMemoryBarrier.dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT;
imageMemoryBarrier.image = image;
imageMemoryBarrier.subresourceRange = subresourceRange;
vkCmdPipelineBarrier(copyCmd, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, 0, 0, nullptr, 0, nullptr, 1, &imageMemoryBarrier);
}
device->flushCommandBuffer(copyCmd, copyQueue);
// Create sampler
VkSamplerCreateInfo samplerCreateInfo{};
samplerCreateInfo.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
samplerCreateInfo.magFilter = VK_FILTER_LINEAR;
samplerCreateInfo.minFilter = VK_FILTER_LINEAR;
samplerCreateInfo.mipmapMode = VK_SAMPLER_MIPMAP_MODE_LINEAR;
samplerCreateInfo.addressModeU = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
samplerCreateInfo.addressModeV = samplerCreateInfo.addressModeU;
samplerCreateInfo.addressModeW = samplerCreateInfo.addressModeU;
samplerCreateInfo.mipLodBias = 0.0f;
samplerCreateInfo.maxAnisotropy = device->enabledFeatures.samplerAnisotropy ? device->properties.limits.maxSamplerAnisotropy : 1.0f;
samplerCreateInfo.anisotropyEnable = device->enabledFeatures.samplerAnisotropy;
samplerCreateInfo.compareOp = VK_COMPARE_OP_NEVER;
samplerCreateInfo.minLod = 0.0f;
samplerCreateInfo.maxLod = (float)mipLevels;
samplerCreateInfo.borderColor = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE;
VK_CHECK_RESULT(vkCreateSampler(device->logicalDevice, &samplerCreateInfo, nullptr, &sampler));
// Create image view
VkImageViewCreateInfo viewCreateInfo{};
viewCreateInfo.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
viewCreateInfo.viewType = VK_IMAGE_VIEW_TYPE_CUBE;
viewCreateInfo.format = format;
viewCreateInfo.components = { VK_COMPONENT_SWIZZLE_R, VK_COMPONENT_SWIZZLE_G, VK_COMPONENT_SWIZZLE_B, VK_COMPONENT_SWIZZLE_A };
viewCreateInfo.subresourceRange = { VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1 };
viewCreateInfo.subresourceRange.layerCount = 6;
viewCreateInfo.subresourceRange.levelCount = mipLevels;
viewCreateInfo.image = image;
VK_CHECK_RESULT(vkCreateImageView(device->logicalDevice, &viewCreateInfo, nullptr, &view));
// Clean up staging resources
vkFreeMemory(device->logicalDevice, stagingMemory, nullptr);
vkDestroyBuffer(device->logicalDevice, stagingBuffer, nullptr);
// Update descriptor image info member that can be used for setting up descriptor sets
updateDescriptor();
}
};
}

View File

@ -22,8 +22,6 @@ const std::string getAssetPath()
}
#endif
namespace vks
{
namespace tools

View File

@ -60,24 +60,6 @@
}
#endif
#define GET_INSTANCE_PROC_ADDR(inst, entrypoint) \
{ \
fp##entrypoint = reinterpret_cast<PFN_vk##entrypoint>(vkGetInstanceProcAddr(inst, "vk"#entrypoint)); \
if (fp##entrypoint == NULL) \
{ \
exit(1); \
} \
}
#define GET_DEVICE_PROC_ADDR(dev, entrypoint) \
{ \
fp##entrypoint = reinterpret_cast<PFN_vk##entrypoint>(vkGetDeviceProcAddr(dev, "vk"#entrypoint)); \
if (fp##entrypoint == NULL) \
{ \
exit(1); \
} \
}
const std::string getAssetPath();
namespace vks

View File

@ -0,0 +1,517 @@
/*
* UI overlay class using ImGui
*
* Copyright (C) 2017 by Sascha Willems - www.saschawillems.de
*
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
*/
#include "VulkanUIOverlay.h"
namespace vks
{
UIOverlay::UIOverlay()
{
#if defined(__ANDROID__)
if (vks::android::screenDensity >= ACONFIGURATION_DENSITY_XXHIGH) {
scale = 3.5f;
}
else if (vks::android::screenDensity >= ACONFIGURATION_DENSITY_XHIGH) {
scale = 2.5f;
}
else if (vks::android::screenDensity >= ACONFIGURATION_DENSITY_HIGH) {
scale = 2.0f;
};
#endif
// Init ImGui
ImGui::CreateContext();
// Color scheme
ImGuiStyle& style = ImGui::GetStyle();
style.Colors[ImGuiCol_TitleBg] = ImVec4(1.0f, 0.0f, 0.0f, 1.0f);
style.Colors[ImGuiCol_TitleBgActive] = ImVec4(1.0f, 0.0f, 0.0f, 1.0f);
style.Colors[ImGuiCol_TitleBgCollapsed] = ImVec4(1.0f, 0.0f, 0.0f, 0.1f);
style.Colors[ImGuiCol_MenuBarBg] = ImVec4(1.0f, 0.0f, 0.0f, 0.4f);
style.Colors[ImGuiCol_Header] = ImVec4(0.8f, 0.0f, 0.0f, 0.4f);
style.Colors[ImGuiCol_HeaderActive] = ImVec4(1.0f, 0.0f, 0.0f, 0.4f);
style.Colors[ImGuiCol_HeaderHovered] = ImVec4(1.0f, 0.0f, 0.0f, 0.4f);
style.Colors[ImGuiCol_FrameBg] = ImVec4(0.0f, 0.0f, 0.0f, 0.8f);
style.Colors[ImGuiCol_CheckMark] = ImVec4(1.0f, 0.0f, 0.0f, 0.8f);
style.Colors[ImGuiCol_SliderGrab] = ImVec4(1.0f, 0.0f, 0.0f, 0.4f);
style.Colors[ImGuiCol_SliderGrabActive] = ImVec4(1.0f, 0.0f, 0.0f, 0.8f);
style.Colors[ImGuiCol_FrameBgHovered] = ImVec4(1.0f, 1.0f, 1.0f, 0.1f);
style.Colors[ImGuiCol_FrameBgActive] = ImVec4(1.0f, 1.0f, 1.0f, 0.2f);
style.Colors[ImGuiCol_Button] = ImVec4(1.0f, 0.0f, 0.0f, 0.4f);
style.Colors[ImGuiCol_ButtonHovered] = ImVec4(1.0f, 0.0f, 0.0f, 0.6f);
style.Colors[ImGuiCol_ButtonActive] = ImVec4(1.0f, 0.0f, 0.0f, 0.8f);
// Dimensions
ImGuiIO& io = ImGui::GetIO();
io.FontGlobalScale = scale;
}
UIOverlay::~UIOverlay() {
if (ImGui::GetCurrentContext()) {
ImGui::DestroyContext();
}
}
/** Prepare all vulkan resources required to render the UI overlay */
void UIOverlay::prepareResources()
{
ImGuiIO& io = ImGui::GetIO();
// Create font texture
unsigned char* fontData;
int texWidth, texHeight;
#if defined(__ANDROID__)
float scale = (float)vks::android::screenDensity / (float)ACONFIGURATION_DENSITY_MEDIUM;
AAsset* asset = AAssetManager_open(androidApp->activity->assetManager, "Roboto-Medium.ttf", AASSET_MODE_STREAMING);
if (asset) {
size_t size = AAsset_getLength(asset);
assert(size > 0);
char *fontAsset = new char[size];
AAsset_read(asset, fontAsset, size);
AAsset_close(asset);
io.Fonts->AddFontFromMemoryTTF(fontAsset, size, 14.0f * scale);
delete[] fontAsset;
}
#else
const std::string filename = getAssetPath() + "Roboto-Medium.ttf";
io.Fonts->AddFontFromFileTTF(filename.c_str(), 16.0f * scale);
#endif
io.Fonts->GetTexDataAsRGBA32(&fontData, &texWidth, &texHeight);
VkDeviceSize uploadSize = texWidth*texHeight * 4 * sizeof(char);
//SRS - Set ImGui style scale factor to handle retina and other HiDPI displays (same as font scaling above)
ImGuiStyle& style = ImGui::GetStyle();
style.ScaleAllSizes(scale);
// Create target image for copy
VkImageCreateInfo imageInfo = vks::initializers::imageCreateInfo();
imageInfo.imageType = VK_IMAGE_TYPE_2D;
imageInfo.format = VK_FORMAT_R8G8B8A8_UNORM;
imageInfo.extent.width = texWidth;
imageInfo.extent.height = texHeight;
imageInfo.extent.depth = 1;
imageInfo.mipLevels = 1;
imageInfo.arrayLayers = 1;
imageInfo.samples = VK_SAMPLE_COUNT_1_BIT;
imageInfo.tiling = VK_IMAGE_TILING_OPTIMAL;
imageInfo.usage = VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT;
imageInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
imageInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
VK_CHECK_RESULT(vkCreateImage(device->logicalDevice, &imageInfo, nullptr, &fontImage));
VkMemoryRequirements memReqs;
vkGetImageMemoryRequirements(device->logicalDevice, fontImage, &memReqs);
VkMemoryAllocateInfo memAllocInfo = vks::initializers::memoryAllocateInfo();
memAllocInfo.allocationSize = memReqs.size;
memAllocInfo.memoryTypeIndex = device->getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT);
VK_CHECK_RESULT(vkAllocateMemory(device->logicalDevice, &memAllocInfo, nullptr, &fontMemory));
VK_CHECK_RESULT(vkBindImageMemory(device->logicalDevice, fontImage, fontMemory, 0));
// Image view
VkImageViewCreateInfo viewInfo = vks::initializers::imageViewCreateInfo();
viewInfo.image = fontImage;
viewInfo.viewType = VK_IMAGE_VIEW_TYPE_2D;
viewInfo.format = VK_FORMAT_R8G8B8A8_UNORM;
viewInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
viewInfo.subresourceRange.levelCount = 1;
viewInfo.subresourceRange.layerCount = 1;
VK_CHECK_RESULT(vkCreateImageView(device->logicalDevice, &viewInfo, nullptr, &fontView));
// Staging buffers for font data upload
vks::Buffer stagingBuffer;
VK_CHECK_RESULT(device->createBuffer(
VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
&stagingBuffer,
uploadSize));
stagingBuffer.map();
memcpy(stagingBuffer.mapped, fontData, uploadSize);
stagingBuffer.unmap();
// Copy buffer data to font image
VkCommandBuffer copyCmd = device->createCommandBuffer(VK_COMMAND_BUFFER_LEVEL_PRIMARY, true);
// Prepare for transfer
vks::tools::setImageLayout(
copyCmd,
fontImage,
VK_IMAGE_ASPECT_COLOR_BIT,
VK_IMAGE_LAYOUT_UNDEFINED,
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
VK_PIPELINE_STAGE_HOST_BIT,
VK_PIPELINE_STAGE_TRANSFER_BIT);
// Copy
VkBufferImageCopy bufferCopyRegion = {};
bufferCopyRegion.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
bufferCopyRegion.imageSubresource.layerCount = 1;
bufferCopyRegion.imageExtent.width = texWidth;
bufferCopyRegion.imageExtent.height = texHeight;
bufferCopyRegion.imageExtent.depth = 1;
vkCmdCopyBufferToImage(
copyCmd,
stagingBuffer.buffer,
fontImage,
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
1,
&bufferCopyRegion
);
// Prepare for shader read
vks::tools::setImageLayout(
copyCmd,
fontImage,
VK_IMAGE_ASPECT_COLOR_BIT,
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
VK_PIPELINE_STAGE_TRANSFER_BIT,
VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
device->flushCommandBuffer(copyCmd, queue, true);
stagingBuffer.destroy();
// Font texture Sampler
VkSamplerCreateInfo samplerInfo = vks::initializers::samplerCreateInfo();
samplerInfo.magFilter = VK_FILTER_LINEAR;
samplerInfo.minFilter = VK_FILTER_LINEAR;
samplerInfo.mipmapMode = VK_SAMPLER_MIPMAP_MODE_LINEAR;
samplerInfo.addressModeU = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
samplerInfo.addressModeV = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
samplerInfo.addressModeW = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
samplerInfo.borderColor = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE;
VK_CHECK_RESULT(vkCreateSampler(device->logicalDevice, &samplerInfo, nullptr, &sampler));
// Descriptor pool
std::vector<VkDescriptorPoolSize> poolSizes = {
vks::initializers::descriptorPoolSize(VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1)
};
VkDescriptorPoolCreateInfo descriptorPoolInfo = vks::initializers::descriptorPoolCreateInfo(poolSizes, 2);
VK_CHECK_RESULT(vkCreateDescriptorPool(device->logicalDevice, &descriptorPoolInfo, nullptr, &descriptorPool));
// Descriptor set layout
std::vector<VkDescriptorSetLayoutBinding> setLayoutBindings = {
vks::initializers::descriptorSetLayoutBinding(VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, VK_SHADER_STAGE_FRAGMENT_BIT, 0),
};
VkDescriptorSetLayoutCreateInfo descriptorLayout = vks::initializers::descriptorSetLayoutCreateInfo(setLayoutBindings);
VK_CHECK_RESULT(vkCreateDescriptorSetLayout(device->logicalDevice, &descriptorLayout, nullptr, &descriptorSetLayout));
// Descriptor set
VkDescriptorSetAllocateInfo allocInfo = vks::initializers::descriptorSetAllocateInfo(descriptorPool, &descriptorSetLayout, 1);
VK_CHECK_RESULT(vkAllocateDescriptorSets(device->logicalDevice, &allocInfo, &descriptorSet));
VkDescriptorImageInfo fontDescriptor = vks::initializers::descriptorImageInfo(
sampler,
fontView,
VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
);
std::vector<VkWriteDescriptorSet> writeDescriptorSets = {
vks::initializers::writeDescriptorSet(descriptorSet, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 0, &fontDescriptor)
};
vkUpdateDescriptorSets(device->logicalDevice, static_cast<uint32_t>(writeDescriptorSets.size()), writeDescriptorSets.data(), 0, nullptr);
}
/** Prepare a separate pipeline for the UI overlay rendering decoupled from the main application */
void UIOverlay::preparePipeline(const VkPipelineCache pipelineCache, const VkRenderPass renderPass, const VkFormat colorFormat, const VkFormat depthFormat)
{
// Pipeline layout
// Push constants for UI rendering parameters
VkPushConstantRange pushConstantRange = vks::initializers::pushConstantRange(VK_SHADER_STAGE_VERTEX_BIT, sizeof(PushConstBlock), 0);
VkPipelineLayoutCreateInfo pipelineLayoutCreateInfo = vks::initializers::pipelineLayoutCreateInfo(&descriptorSetLayout, 1);
pipelineLayoutCreateInfo.pushConstantRangeCount = 1;
pipelineLayoutCreateInfo.pPushConstantRanges = &pushConstantRange;
VK_CHECK_RESULT(vkCreatePipelineLayout(device->logicalDevice, &pipelineLayoutCreateInfo, nullptr, &pipelineLayout));
// Setup graphics pipeline for UI rendering
VkPipelineInputAssemblyStateCreateInfo inputAssemblyState =
vks::initializers::pipelineInputAssemblyStateCreateInfo(VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, 0, VK_FALSE);
VkPipelineRasterizationStateCreateInfo rasterizationState =
vks::initializers::pipelineRasterizationStateCreateInfo(VK_POLYGON_MODE_FILL, VK_CULL_MODE_NONE, VK_FRONT_FACE_COUNTER_CLOCKWISE);
// Enable blending
VkPipelineColorBlendAttachmentState blendAttachmentState{};
blendAttachmentState.blendEnable = VK_TRUE;
blendAttachmentState.colorWriteMask = VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT | VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT;
blendAttachmentState.srcColorBlendFactor = VK_BLEND_FACTOR_SRC_ALPHA;
blendAttachmentState.dstColorBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA;
blendAttachmentState.colorBlendOp = VK_BLEND_OP_ADD;
blendAttachmentState.srcAlphaBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA;
blendAttachmentState.dstAlphaBlendFactor = VK_BLEND_FACTOR_ZERO;
blendAttachmentState.alphaBlendOp = VK_BLEND_OP_ADD;
VkPipelineColorBlendStateCreateInfo colorBlendState =
vks::initializers::pipelineColorBlendStateCreateInfo(1, &blendAttachmentState);
VkPipelineDepthStencilStateCreateInfo depthStencilState =
vks::initializers::pipelineDepthStencilStateCreateInfo(VK_FALSE, VK_FALSE, VK_COMPARE_OP_ALWAYS);
VkPipelineViewportStateCreateInfo viewportState =
vks::initializers::pipelineViewportStateCreateInfo(1, 1, 0);
VkPipelineMultisampleStateCreateInfo multisampleState =
vks::initializers::pipelineMultisampleStateCreateInfo(rasterizationSamples);
std::vector<VkDynamicState> dynamicStateEnables = {
VK_DYNAMIC_STATE_VIEWPORT,
VK_DYNAMIC_STATE_SCISSOR
};
VkPipelineDynamicStateCreateInfo dynamicState =
vks::initializers::pipelineDynamicStateCreateInfo(dynamicStateEnables);
VkGraphicsPipelineCreateInfo pipelineCreateInfo = vks::initializers::pipelineCreateInfo(pipelineLayout, renderPass);
pipelineCreateInfo.pInputAssemblyState = &inputAssemblyState;
pipelineCreateInfo.pRasterizationState = &rasterizationState;
pipelineCreateInfo.pColorBlendState = &colorBlendState;
pipelineCreateInfo.pMultisampleState = &multisampleState;
pipelineCreateInfo.pViewportState = &viewportState;
pipelineCreateInfo.pDepthStencilState = &depthStencilState;
pipelineCreateInfo.pDynamicState = &dynamicState;
pipelineCreateInfo.stageCount = static_cast<uint32_t>(shaders.size());
pipelineCreateInfo.pStages = shaders.data();
pipelineCreateInfo.subpass = subpass;
#if defined(VK_KHR_dynamic_rendering)
// SRS - if we are using dynamic rendering (i.e. renderPass null), must define color, depth and stencil attachments at pipeline create time
VkPipelineRenderingCreateInfo pipelineRenderingCreateInfo = {};
if (renderPass == VK_NULL_HANDLE) {
pipelineRenderingCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO;
pipelineRenderingCreateInfo.colorAttachmentCount = 1;
pipelineRenderingCreateInfo.pColorAttachmentFormats = &colorFormat;
pipelineRenderingCreateInfo.depthAttachmentFormat = depthFormat;
pipelineRenderingCreateInfo.stencilAttachmentFormat = depthFormat;
pipelineCreateInfo.pNext = &pipelineRenderingCreateInfo;
}
#endif
// Vertex bindings an attributes based on ImGui vertex definition
std::vector<VkVertexInputBindingDescription> vertexInputBindings = {
vks::initializers::vertexInputBindingDescription(0, sizeof(ImDrawVert), VK_VERTEX_INPUT_RATE_VERTEX),
};
std::vector<VkVertexInputAttributeDescription> vertexInputAttributes = {
vks::initializers::vertexInputAttributeDescription(0, 0, VK_FORMAT_R32G32_SFLOAT, offsetof(ImDrawVert, pos)), // Location 0: Position
vks::initializers::vertexInputAttributeDescription(0, 1, VK_FORMAT_R32G32_SFLOAT, offsetof(ImDrawVert, uv)), // Location 1: UV
vks::initializers::vertexInputAttributeDescription(0, 2, VK_FORMAT_R8G8B8A8_UNORM, offsetof(ImDrawVert, col)), // Location 0: Color
};
VkPipelineVertexInputStateCreateInfo vertexInputState = vks::initializers::pipelineVertexInputStateCreateInfo();
vertexInputState.vertexBindingDescriptionCount = static_cast<uint32_t>(vertexInputBindings.size());
vertexInputState.pVertexBindingDescriptions = vertexInputBindings.data();
vertexInputState.vertexAttributeDescriptionCount = static_cast<uint32_t>(vertexInputAttributes.size());
vertexInputState.pVertexAttributeDescriptions = vertexInputAttributes.data();
pipelineCreateInfo.pVertexInputState = &vertexInputState;
VK_CHECK_RESULT(vkCreateGraphicsPipelines(device->logicalDevice, pipelineCache, 1, &pipelineCreateInfo, nullptr, &pipeline));
}
/** Update vertex and index buffer containing the imGui elements when required */
bool UIOverlay::update()
{
ImDrawData* imDrawData = ImGui::GetDrawData();
bool updateCmdBuffers = false;
if (!imDrawData) { return false; };
// Note: Alignment is done inside buffer creation
VkDeviceSize vertexBufferSize = imDrawData->TotalVtxCount * sizeof(ImDrawVert);
VkDeviceSize indexBufferSize = imDrawData->TotalIdxCount * sizeof(ImDrawIdx);
// Update buffers only if vertex or index count has been changed compared to current buffer size
if ((vertexBufferSize == 0) || (indexBufferSize == 0)) {
return false;
}
// Vertex buffer
if ((vertexBuffer.buffer == VK_NULL_HANDLE) || (vertexCount != imDrawData->TotalVtxCount)) {
vertexBuffer.unmap();
vertexBuffer.destroy();
VK_CHECK_RESULT(device->createBuffer(VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT, &vertexBuffer, vertexBufferSize));
vertexCount = imDrawData->TotalVtxCount;
vertexBuffer.unmap();
vertexBuffer.map();
updateCmdBuffers = true;
}
// Index buffer
if ((indexBuffer.buffer == VK_NULL_HANDLE) || (indexCount < imDrawData->TotalIdxCount)) {
indexBuffer.unmap();
indexBuffer.destroy();
VK_CHECK_RESULT(device->createBuffer(VK_BUFFER_USAGE_INDEX_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT, &indexBuffer, indexBufferSize));
indexCount = imDrawData->TotalIdxCount;
indexBuffer.map();
updateCmdBuffers = true;
}
// Upload data
ImDrawVert* vtxDst = (ImDrawVert*)vertexBuffer.mapped;
ImDrawIdx* idxDst = (ImDrawIdx*)indexBuffer.mapped;
for (int n = 0; n < imDrawData->CmdListsCount; n++) {
const ImDrawList* cmd_list = imDrawData->CmdLists[n];
memcpy(vtxDst, cmd_list->VtxBuffer.Data, cmd_list->VtxBuffer.Size * sizeof(ImDrawVert));
memcpy(idxDst, cmd_list->IdxBuffer.Data, cmd_list->IdxBuffer.Size * sizeof(ImDrawIdx));
vtxDst += cmd_list->VtxBuffer.Size;
idxDst += cmd_list->IdxBuffer.Size;
}
// Flush to make writes visible to GPU
vertexBuffer.flush();
indexBuffer.flush();
return updateCmdBuffers;
}
void UIOverlay::draw(const VkCommandBuffer commandBuffer)
{
ImDrawData* imDrawData = ImGui::GetDrawData();
int32_t vertexOffset = 0;
int32_t indexOffset = 0;
if ((!imDrawData) || (imDrawData->CmdListsCount == 0)) {
return;
}
ImGuiIO& io = ImGui::GetIO();
vkCmdBindPipeline(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline);
vkCmdBindDescriptorSets(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, pipelineLayout, 0, 1, &descriptorSet, 0, NULL);
pushConstBlock.scale = glm::vec2(2.0f / io.DisplaySize.x, 2.0f / io.DisplaySize.y);
pushConstBlock.translate = glm::vec2(-1.0f);
vkCmdPushConstants(commandBuffer, pipelineLayout, VK_SHADER_STAGE_VERTEX_BIT, 0, sizeof(PushConstBlock), &pushConstBlock);
VkDeviceSize offsets[1] = { 0 };
vkCmdBindVertexBuffers(commandBuffer, 0, 1, &vertexBuffer.buffer, offsets);
vkCmdBindIndexBuffer(commandBuffer, indexBuffer.buffer, 0, VK_INDEX_TYPE_UINT16);
for (int32_t i = 0; i < imDrawData->CmdListsCount; i++)
{
const ImDrawList* cmd_list = imDrawData->CmdLists[i];
for (int32_t j = 0; j < cmd_list->CmdBuffer.Size; j++)
{
const ImDrawCmd* pcmd = &cmd_list->CmdBuffer[j];
VkRect2D scissorRect;
scissorRect.offset.x = std::max((int32_t)(pcmd->ClipRect.x), 0);
scissorRect.offset.y = std::max((int32_t)(pcmd->ClipRect.y), 0);
scissorRect.extent.width = (uint32_t)(pcmd->ClipRect.z - pcmd->ClipRect.x);
scissorRect.extent.height = (uint32_t)(pcmd->ClipRect.w - pcmd->ClipRect.y);
vkCmdSetScissor(commandBuffer, 0, 1, &scissorRect);
vkCmdDrawIndexed(commandBuffer, pcmd->ElemCount, 1, indexOffset, vertexOffset, 0);
indexOffset += pcmd->ElemCount;
}
vertexOffset += cmd_list->VtxBuffer.Size;
}
}
void UIOverlay::resize(uint32_t width, uint32_t height)
{
ImGuiIO& io = ImGui::GetIO();
io.DisplaySize = ImVec2((float)(width), (float)(height));
}
void UIOverlay::freeResources()
{
vertexBuffer.destroy();
indexBuffer.destroy();
vkDestroyImageView(device->logicalDevice, fontView, nullptr);
vkDestroyImage(device->logicalDevice, fontImage, nullptr);
vkFreeMemory(device->logicalDevice, fontMemory, nullptr);
vkDestroySampler(device->logicalDevice, sampler, nullptr);
vkDestroyDescriptorSetLayout(device->logicalDevice, descriptorSetLayout, nullptr);
vkDestroyDescriptorPool(device->logicalDevice, descriptorPool, nullptr);
vkDestroyPipelineLayout(device->logicalDevice, pipelineLayout, nullptr);
vkDestroyPipeline(device->logicalDevice, pipeline, nullptr);
}
bool UIOverlay::header(const char *caption)
{
return ImGui::CollapsingHeader(caption, ImGuiTreeNodeFlags_DefaultOpen);
}
bool UIOverlay::checkBox(const char *caption, bool *value)
{
bool res = ImGui::Checkbox(caption, value);
if (res) { updated = true; };
return res;
}
bool UIOverlay::checkBox(const char *caption, int32_t *value)
{
bool val = (*value == 1);
bool res = ImGui::Checkbox(caption, &val);
*value = val;
if (res) { updated = true; };
return res;
}
bool UIOverlay::radioButton(const char* caption, bool value)
{
bool res = ImGui::RadioButton(caption, value);
if (res) { updated = true; };
return res;
}
bool UIOverlay::inputFloat(const char *caption, float *value, float step, uint32_t precision)
{
bool res = ImGui::InputFloat(caption, value, step, step * 10.0f, precision);
if (res) { updated = true; };
return res;
}
bool UIOverlay::sliderFloat(const char* caption, float* value, float min, float max)
{
bool res = ImGui::SliderFloat(caption, value, min, max);
if (res) { updated = true; };
return res;
}
bool UIOverlay::sliderInt(const char* caption, int32_t* value, int32_t min, int32_t max)
{
bool res = ImGui::SliderInt(caption, value, min, max);
if (res) { updated = true; };
return res;
}
bool UIOverlay::comboBox(const char *caption, int32_t *itemindex, std::vector<std::string> items)
{
if (items.empty()) {
return false;
}
std::vector<const char*> charitems;
charitems.reserve(items.size());
for (size_t i = 0; i < items.size(); i++) {
charitems.push_back(items[i].c_str());
}
uint32_t itemCount = static_cast<uint32_t>(charitems.size());
bool res = ImGui::Combo(caption, itemindex, &charitems[0], itemCount, itemCount);
if (res) { updated = true; };
return res;
}
bool UIOverlay::button(const char *caption)
{
bool res = ImGui::Button(caption);
if (res) { updated = true; };
return res;
}
bool UIOverlay::colorPicker(const char* caption, float* color) {
bool res = ImGui::ColorEdit4(caption, color, ImGuiColorEditFlags_NoInputs);
if (res) { updated = true; };
return res;
}
void UIOverlay::text(const char *formatstr, ...)
{
va_list args;
va_start(args, formatstr);
ImGui::TextV(formatstr, args);
va_end(args);
}
}

View File

@ -0,0 +1,93 @@
/*
* UI overlay class using ImGui
*
* Copyright (C) 2017 by Sascha Willems - www.saschawillems.de
*
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
*/
#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <vector>
#include <sstream>
#include <iomanip>
#include <vulkan/vulkan.h>
#include "VulkanTools.h"
#include "VulkanDebug.h"
#include "VulkanBuffer.h"
#include "VulkanDevice.h"
#include "../external/imgui/imgui.h"
#if defined(__ANDROID__)
#include "VulkanAndroid.h"
#endif
namespace vks
{
class UIOverlay
{
public:
vks::VulkanDevice *device;
VkQueue queue;
VkSampleCountFlagBits rasterizationSamples = VK_SAMPLE_COUNT_1_BIT;
uint32_t subpass = 0;
vks::Buffer vertexBuffer;
vks::Buffer indexBuffer;
int32_t vertexCount = 0;
int32_t indexCount = 0;
std::vector<VkPipelineShaderStageCreateInfo> shaders;
VkDescriptorPool descriptorPool;
VkDescriptorSetLayout descriptorSetLayout;
VkDescriptorSet descriptorSet;
VkPipelineLayout pipelineLayout;
VkPipeline pipeline;
VkDeviceMemory fontMemory = VK_NULL_HANDLE;
VkImage fontImage = VK_NULL_HANDLE;
VkImageView fontView = VK_NULL_HANDLE;
VkSampler sampler;
struct PushConstBlock {
glm::vec2 scale;
glm::vec2 translate;
} pushConstBlock;
bool visible = true;
bool updated = false;
float scale = 1.0f;
UIOverlay();
~UIOverlay();
void preparePipeline(const VkPipelineCache pipelineCache, const VkRenderPass renderPass, const VkFormat colorFormat, const VkFormat depthFormat);
void prepareResources();
bool update();
void draw(const VkCommandBuffer commandBuffer);
void resize(uint32_t width, uint32_t height);
void freeResources();
bool header(const char* caption);
bool checkBox(const char* caption, bool* value);
bool checkBox(const char* caption, int32_t* value);
bool radioButton(const char* caption, bool value);
bool inputFloat(const char* caption, float* value, float step, uint32_t precision);
bool sliderFloat(const char* caption, float* value, float min, float max);
bool sliderInt(const char* caption, int32_t* value, int32_t min, int32_t max);
bool comboBox(const char* caption, int32_t* itemindex, std::vector<std::string> items);
bool button(const char* caption);
bool colorPicker(const char* caption, float* color);
void text(const char* formatstr, ...);
};
}

View File

@ -1,183 +0,0 @@
/*
* Vulkan utilities
*
* Copyright(C) 2018 by Sascha Willems - www.saschawillems.de
*
* This code is licensed under the MIT license(MIT) (http://opensource.org/licenses/MIT)
*/
#pragma once
#include <stdlib.h>
#include <stdio.h>
#include <fstream>
#include <iostream>
#include <string>
#include <map>
#include "vulkan/vulkan.h"
#include "VulkanDevice.hpp"
/*
Vulkan buffer object
*/
struct Buffer {
VkDevice device;
VkBuffer buffer = VK_NULL_HANDLE;
VkDeviceMemory memory = VK_NULL_HANDLE;
VkDescriptorBufferInfo descriptor;
int32_t count = 0;
void *mapped = nullptr;
void create(vks::VulkanDevice *device, VkBufferUsageFlags usageFlags, VkMemoryPropertyFlags memoryPropertyFlags, VkDeviceSize size, bool map = true) {
this->device = device->logicalDevice;
device->createBuffer(usageFlags, memoryPropertyFlags, size, &buffer, &memory);
descriptor = { buffer, 0, size };
if (map) {
VK_CHECK_RESULT(vkMapMemory(device->logicalDevice, memory, 0, size, 0, &mapped));
}
}
void destroy() {
if (mapped) {
unmap();
}
vkDestroyBuffer(device, buffer, nullptr);
vkFreeMemory(device, memory, nullptr);
buffer = VK_NULL_HANDLE;
memory = VK_NULL_HANDLE;
}
void map() {
VK_CHECK_RESULT(vkMapMemory(device, memory, 0, VK_WHOLE_SIZE, 0, &mapped));
}
void unmap() {
if (mapped) {
vkUnmapMemory(device, memory);
mapped = nullptr;
}
}
void flush(VkDeviceSize size = VK_WHOLE_SIZE) {
VkMappedMemoryRange mappedRange{};
mappedRange.sType = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE;
mappedRange.memory = memory;
mappedRange.size = size;
VK_CHECK_RESULT(vkFlushMappedMemoryRanges(device, 1, &mappedRange));
}
};
VkPipelineShaderStageCreateInfo loadShader(VkDevice device, std::string filename, VkShaderStageFlagBits stage)
{
VkPipelineShaderStageCreateInfo shaderStage{};
shaderStage.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
shaderStage.stage = stage;
shaderStage.pName = "main";
#if defined(VK_USE_PLATFORM_ANDROID_KHR)
std::string assetpath = "shaders/" + filename;
AAsset* asset = AAssetManager_open(androidApp->activity->assetManager, assetpath.c_str(), AASSET_MODE_STREAMING);
assert(asset);
size_t size = AAsset_getLength(asset);
assert(size > 0);
char *shaderCode = new char[size];
AAsset_read(asset, shaderCode, size);
AAsset_close(asset);
VkShaderModule shaderModule;
VkShaderModuleCreateInfo moduleCreateInfo;
moduleCreateInfo.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
moduleCreateInfo.pNext = NULL;
moduleCreateInfo.codeSize = size;
moduleCreateInfo.pCode = (uint32_t*)shaderCode;
moduleCreateInfo.flags = 0;
VK_CHECK_RESULT(vkCreateShaderModule(device, &moduleCreateInfo, NULL, &shaderStage.module));
delete[] shaderCode;
#else
std::ifstream is(filename, std::ios::binary | std::ios::in | std::ios::ate);
if (is.is_open()) {
size_t size = is.tellg();
is.seekg(0, std::ios::beg);
char* shaderCode = new char[size];
is.read(shaderCode, size);
is.close();
assert(size > 0);
VkShaderModuleCreateInfo moduleCreateInfo{};
moduleCreateInfo.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
moduleCreateInfo.codeSize = size;
moduleCreateInfo.pCode = (uint32_t*)shaderCode;
vkCreateShaderModule(device, &moduleCreateInfo, NULL, &shaderStage.module);
delete[] shaderCode;
}
else {
std::cerr << "Error: Could not open shader file \"" << filename << "\"" << std::endl;
shaderStage.module = VK_NULL_HANDLE;
}
#endif
assert(shaderStage.module != VK_NULL_HANDLE);
return shaderStage;
}
void readDirectory(const std::string& directory, const std::string &pattern, std::map<std::string, std::string> &filelist, bool recursive)
{
#if defined(VK_USE_PLATFORM_ANDROID_KHR)
AAssetDir* assetDir = AAssetManager_openDir(androidApp->activity->assetManager, directory.c_str());
AAssetDir_rewind(assetDir);
const char* assetName;
while ((assetName = AAssetDir_getNextFileName(assetDir)) != 0) {
std::string filename(assetName);
filename.erase(filename.find_last_of("."), std::string::npos);
filelist[filename] = directory + "/" + assetName;
}
AAssetDir_close(assetDir);
#elif defined(VK_USE_PLATFORM_WIN32_KHR)
std::string searchpattern(directory + "/" + pattern);
WIN32_FIND_DATA data;
HANDLE hFind;
if ((hFind = FindFirstFile(searchpattern.c_str(), &data)) != INVALID_HANDLE_VALUE) {
do {
std::string filename(data.cFileName);
filename.erase(filename.find_last_of("."), std::string::npos);
filelist[filename] = directory + "/" + data.cFileName;
} while (FindNextFile(hFind, &data) != 0);
FindClose(hFind);
}
if (recursive) {
std::string dirpattern = directory + "/*";
if ((hFind = FindFirstFile(dirpattern.c_str(), &data)) != INVALID_HANDLE_VALUE) {
do {
if (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
char subdir[MAX_PATH];
strcpy(subdir, directory.c_str());
strcat(subdir, "/");
strcat(subdir, data.cFileName);
if ((strcmp(data.cFileName, ".") != 0) && (strcmp(data.cFileName, "..") != 0)) {
readDirectory(subdir, pattern, filelist, recursive);
}
}
} while (FindNextFile(hFind, &data) != 0);
FindClose(hFind);
}
}
#elif defined(__linux__)
std::string patternExt = pattern;
patternExt.erase(0, pattern.find_last_of("."));
struct dirent *entry;
DIR *dir = opendir(directory.c_str());
if (dir == NULL) {
return;
}
while ((entry = readdir(dir)) != NULL) {
if (entry->d_type == DT_REG) {
std::string filename(entry->d_name);
if (filename.find(patternExt) != std::string::npos) {
filename.erase(filename.find_last_of("."), std::string::npos);
filelist[filename] = directory + "/" + entry->d_name;
}
}
if (recursive && (entry->d_type == DT_DIR)) {
std::string subdir = directory + "/" + entry->d_name;
if ((strcmp(entry->d_name, ".") != 0) && (strcmp(entry->d_name, "..") != 0)) {
readDirectory(subdir, pattern, filelist, recursive);
}
}
}
closedir(dir);
#endif
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,308 @@
/*
* Vulkan glTF model and texture loading class based on tinyglTF (https://github.com/syoyo/tinygltf)
*
* Copyright (C) 2018 by Sascha Willems - www.saschawillems.de
*
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
*/
#pragma once
#include <stdlib.h>
#include <string>
#include <fstream>
#include <vector>
#include "vulkan/vulkan.h"
#include "VulkanDevice.h"
#include <ktx.h>
#include <ktxvulkan.h>
#define GLM_FORCE_RADIANS
#define GLM_FORCE_DEPTH_ZERO_TO_ONE
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>
#define TINYGLTF_NO_STB_IMAGE_WRITE
#ifdef VK_USE_PLATFORM_ANDROID_KHR
#define TINYGLTF_ANDROID_LOAD_FROM_ASSETS
#endif
#include "tiny_gltf.h"
#if defined(__ANDROID__)
#include <android/asset_manager.h>
#endif
namespace vkglTF
{
enum DescriptorBindingFlags {
ImageBaseColor = 0x00000001,
ImageNormalMap = 0x00000002
};
extern VkDescriptorSetLayout descriptorSetLayoutImage;
extern VkDescriptorSetLayout descriptorSetLayoutUbo;
extern VkMemoryPropertyFlags memoryPropertyFlags;
extern uint32_t descriptorBindingFlags;
struct Node;
/*
glTF texture loading class
*/
struct Texture {
vks::VulkanDevice* device = nullptr;
VkImage image;
VkImageLayout imageLayout;
VkDeviceMemory deviceMemory;
VkImageView view;
uint32_t width, height;
uint32_t mipLevels;
uint32_t layerCount;
VkDescriptorImageInfo descriptor;
VkSampler sampler;
void updateDescriptor();
void destroy();
void fromglTfImage(tinygltf::Image& gltfimage, std::string path, vks::VulkanDevice* device, VkQueue copyQueue);
};
/*
glTF material class
*/
struct Material {
vks::VulkanDevice* device = nullptr;
enum AlphaMode { ALPHAMODE_OPAQUE, ALPHAMODE_MASK, ALPHAMODE_BLEND };
AlphaMode alphaMode = ALPHAMODE_OPAQUE;
float alphaCutoff = 1.0f;
float metallicFactor = 1.0f;
float roughnessFactor = 1.0f;
glm::vec4 baseColorFactor = glm::vec4(1.0f);
vkglTF::Texture* baseColorTexture = nullptr;
vkglTF::Texture* metallicRoughnessTexture = nullptr;
vkglTF::Texture* normalTexture = nullptr;
vkglTF::Texture* occlusionTexture = nullptr;
vkglTF::Texture* emissiveTexture = nullptr;
vkglTF::Texture* specularGlossinessTexture;
vkglTF::Texture* diffuseTexture;
VkDescriptorSet descriptorSet = VK_NULL_HANDLE;
Material(vks::VulkanDevice* device) : device(device) {};
void createDescriptorSet(VkDescriptorPool descriptorPool, VkDescriptorSetLayout descriptorSetLayout, uint32_t descriptorBindingFlags);
};
/*
glTF primitive
*/
struct Primitive {
uint32_t firstIndex;
uint32_t indexCount;
uint32_t firstVertex;
uint32_t vertexCount;
Material& material;
struct Dimensions {
glm::vec3 min = glm::vec3(FLT_MAX);
glm::vec3 max = glm::vec3(-FLT_MAX);
glm::vec3 size;
glm::vec3 center;
float radius;
} dimensions;
void setDimensions(glm::vec3 min, glm::vec3 max);
Primitive(uint32_t firstIndex, uint32_t indexCount, Material& material) : firstIndex(firstIndex), indexCount(indexCount), material(material) {};
};
/*
glTF mesh
*/
struct Mesh {
vks::VulkanDevice* device;
std::vector<Primitive*> primitives;
std::string name;
struct UniformBuffer {
VkBuffer buffer;
VkDeviceMemory memory;
VkDescriptorBufferInfo descriptor;
VkDescriptorSet descriptorSet = VK_NULL_HANDLE;
void* mapped;
} uniformBuffer;
struct UniformBlock {
glm::mat4 matrix;
glm::mat4 jointMatrix[64]{};
float jointcount{ 0 };
} uniformBlock;
Mesh(vks::VulkanDevice* device, glm::mat4 matrix);
~Mesh();
};
/*
glTF skin
*/
struct Skin {
std::string name;
Node* skeletonRoot = nullptr;
std::vector<glm::mat4> inverseBindMatrices;
std::vector<Node*> joints;
};
/*
glTF node
*/
struct Node {
Node* parent;
uint32_t index;
std::vector<Node*> children;
glm::mat4 matrix;
std::string name;
Mesh* mesh;
Skin* skin;
int32_t skinIndex = -1;
glm::vec3 translation{};
glm::vec3 scale{ 1.0f };
glm::quat rotation{};
glm::mat4 localMatrix();
glm::mat4 getMatrix();
void update();
~Node();
};
/*
glTF animation channel
*/
struct AnimationChannel {
enum PathType { TRANSLATION, ROTATION, SCALE };
PathType path;
Node* node;
uint32_t samplerIndex;
};
/*
glTF animation sampler
*/
struct AnimationSampler {
enum InterpolationType { LINEAR, STEP, CUBICSPLINE };
InterpolationType interpolation;
std::vector<float> inputs;
std::vector<glm::vec4> outputsVec4;
};
/*
glTF animation
*/
struct Animation {
std::string name;
std::vector<AnimationSampler> samplers;
std::vector<AnimationChannel> channels;
float start = std::numeric_limits<float>::max();
float end = std::numeric_limits<float>::min();
};
/*
glTF default vertex layout with easy Vulkan mapping functions
*/
enum class VertexComponent { Position, Normal, UV, Color, Tangent, Joint0, Weight0 };
struct Vertex {
glm::vec3 pos;
glm::vec3 normal;
glm::vec2 uv;
glm::vec4 color;
glm::vec4 joint0;
glm::vec4 weight0;
glm::vec4 tangent;
static VkVertexInputBindingDescription vertexInputBindingDescription;
static std::vector<VkVertexInputAttributeDescription> vertexInputAttributeDescriptions;
static VkPipelineVertexInputStateCreateInfo pipelineVertexInputStateCreateInfo;
static VkVertexInputBindingDescription inputBindingDescription(uint32_t binding);
static VkVertexInputAttributeDescription inputAttributeDescription(uint32_t binding, uint32_t location, VertexComponent component);
static std::vector<VkVertexInputAttributeDescription> inputAttributeDescriptions(uint32_t binding, const std::vector<VertexComponent> components);
/** @brief Returns the default pipeline vertex input state create info structure for the requested vertex components */
static VkPipelineVertexInputStateCreateInfo* getPipelineVertexInputState(const std::vector<VertexComponent> components);
};
enum FileLoadingFlags {
None = 0x00000000,
PreTransformVertices = 0x00000001,
PreMultiplyVertexColors = 0x00000002,
FlipY = 0x00000004,
DontLoadImages = 0x00000008
};
enum RenderFlags {
BindImages = 0x00000001,
RenderOpaqueNodes = 0x00000002,
RenderAlphaMaskedNodes = 0x00000004,
RenderAlphaBlendedNodes = 0x00000008
};
/*
glTF model loading and rendering class
*/
class Model {
private:
vkglTF::Texture* getTexture(uint32_t index);
vkglTF::Texture emptyTexture;
void createEmptyTexture(VkQueue transferQueue);
public:
vks::VulkanDevice* device;
VkDescriptorPool descriptorPool;
struct Vertices {
int count;
VkBuffer buffer;
VkDeviceMemory memory;
} vertices;
struct Indices {
int count;
VkBuffer buffer;
VkDeviceMemory memory;
} indices;
std::vector<Node*> nodes;
std::vector<Node*> linearNodes;
std::vector<Skin*> skins;
std::vector<Texture> textures;
std::vector<Material> materials;
std::vector<Animation> animations;
struct Dimensions {
glm::vec3 min = glm::vec3(FLT_MAX);
glm::vec3 max = glm::vec3(-FLT_MAX);
glm::vec3 size;
glm::vec3 center;
float radius;
} dimensions;
bool metallicRoughnessWorkflow = true;
bool buffersBound = false;
std::string path;
Model() {};
~Model();
void loadNode(vkglTF::Node* parent, const tinygltf::Node& node, uint32_t nodeIndex, const tinygltf::Model& model, std::vector<uint32_t>& indexBuffer, std::vector<Vertex>& vertexBuffer, float globalscale);
void loadSkins(tinygltf::Model& gltfModel);
void loadImages(tinygltf::Model& gltfModel, vks::VulkanDevice* device, VkQueue transferQueue);
void loadMaterials(tinygltf::Model& gltfModel);
void loadAnimations(tinygltf::Model& gltfModel);
void loadFromFile(std::string filename, vks::VulkanDevice* device, VkQueue transferQueue, uint32_t fileLoadingFlags = vkglTF::FileLoadingFlags::None, float scale = 1.0f);
void bindBuffers(VkCommandBuffer commandBuffer);
void drawNode(Node* node, VkCommandBuffer commandBuffer, uint32_t renderFlags = 0, VkPipelineLayout pipelineLayout = VK_NULL_HANDLE, uint32_t bindImageSet = 1);
void draw(VkCommandBuffer commandBuffer, uint32_t renderFlags = 0, VkPipelineLayout pipelineLayout = VK_NULL_HANDLE, uint32_t bindImageSet = 1);
void getNodeDimensions(Node* node, glm::vec3& min, glm::vec3& max);
void getSceneDimensions();
void updateAnimation(uint32_t index, float time);
Node* findNode(Node* parent, uint32_t index);
Node* nodeFromIndex(uint32_t index);
void prepareNodeDescriptor(vkglTF::Node* node, VkDescriptorSetLayout descriptorSetLayout);
};
}

View File

@ -1,333 +0,0 @@
/*
* Vulkan Example - Physical based rendering a glTF 2.0 model with image based lighting
*
* Copyright (C) 2018 by Sascha Willems - www.saschawillems.de
*
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
*/
#include <vector>
#include <array>
#include <map>
#include "vulkan/vulkan.h"
#include "imgui/imgui.h"
#include "VulkanDevice.hpp"
#include "VulkanUtils.hpp"
#include "VulkanTexture.hpp"
#if defined(__ANDROID__)
#include <android/asset_manager.h>
#endif
#define GLM_FORCE_RADIANS
#define GLM_FORCE_DEPTH_ZERO_TO_ONE
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
struct UI {
private:
VkDevice device;
public:
Buffer vertexBuffer, indexBuffer;
vks::Texture2D fontTexture;
VkPipelineLayout pipelineLayout;
VkPipeline pipeline;
VkDescriptorPool descriptorPool;
VkDescriptorSetLayout descriptorSetLayout;
VkDescriptorSet descriptorSet;
struct PushConstBlock {
glm::vec2 scale;
glm::vec2 translate;
} pushConstBlock;
UI(vks::VulkanDevice *vulkanDevice, VkRenderPass renderPass, VkQueue queue, VkPipelineCache pipelineCache, VkSampleCountFlagBits multiSampleCount) {
this->device = vulkanDevice->logicalDevice;
ImGui::CreateContext();
/*
Font texture loading
*/
ImGuiIO& io = ImGui::GetIO();
unsigned char* fontData;
int texWidth, texHeight;
#if defined(__ANDROID__)
float scale = (float)vks::android::screenDensity / (float)ACONFIGURATION_DENSITY_MEDIUM;
AAsset* asset = AAssetManager_open(androidApp->activity->assetManager, "Roboto-Medium.ttf", AASSET_MODE_STREAMING);
assert(asset);
size_t size = AAsset_getLength(asset);
assert(size > 0);
char *fontAsset = new char[size];
AAsset_read(asset, fontAsset, size);
AAsset_close(asset);
io.Fonts->AddFontFromMemoryTTF(fontAsset, size, 14.0f * scale);
delete[] fontAsset;
#else
std::string ttfFilePath = getAssetPath() + "/Roboto-Medium.ttf";
io.Fonts->AddFontFromFileTTF(ttfFilePath.data(), 16.0f);
#endif
io.Fonts->GetTexDataAsRGBA32(&fontData, &texWidth, &texHeight);
fontTexture.loadFromBuffer(fontData, texWidth * texHeight * 4 * sizeof(char), VK_FORMAT_R8G8B8A8_UNORM, texWidth, texHeight, vulkanDevice, queue);
/*
Setup
*/
ImGuiStyle& style = ImGui::GetStyle();
style.FrameBorderSize = 0.0f;
style.WindowBorderSize = 0.0f;
/*
Descriptor pool
*/
std::vector<VkDescriptorPoolSize> poolSizes = {
{ VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1 }
};
VkDescriptorPoolCreateInfo descriptorPoolCI{};
descriptorPoolCI.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO;
descriptorPoolCI.poolSizeCount = 1;
descriptorPoolCI.pPoolSizes = poolSizes.data();
descriptorPoolCI.maxSets = 1;
VK_CHECK_RESULT(vkCreateDescriptorPool(device, &descriptorPoolCI, nullptr, &descriptorPool));
/*
Descriptor set layout
*/
VkDescriptorSetLayoutBinding setLayoutBinding{ 0, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1, VK_SHADER_STAGE_FRAGMENT_BIT, nullptr };
VkDescriptorSetLayoutCreateInfo descriptorSetLayoutCI{};
descriptorSetLayoutCI.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
descriptorSetLayoutCI.pBindings = &setLayoutBinding;
descriptorSetLayoutCI.bindingCount = 1;
VK_CHECK_RESULT(vkCreateDescriptorSetLayout(device, &descriptorSetLayoutCI, nullptr, &descriptorSetLayout));
/*
Descriptor set
*/
VkDescriptorSetAllocateInfo descriptorSetAllocInfo{};
descriptorSetAllocInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO;
descriptorSetAllocInfo.descriptorPool = descriptorPool;
descriptorSetAllocInfo.pSetLayouts = &descriptorSetLayout;
descriptorSetAllocInfo.descriptorSetCount = 1;
VK_CHECK_RESULT(vkAllocateDescriptorSets(device, &descriptorSetAllocInfo, &descriptorSet));
VkWriteDescriptorSet writeDescriptorSet{};
writeDescriptorSet.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
writeDescriptorSet.descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
writeDescriptorSet.descriptorCount = 1;
writeDescriptorSet.dstSet = descriptorSet;
writeDescriptorSet.dstBinding = 0;
writeDescriptorSet.pImageInfo = &fontTexture.descriptor;
vkUpdateDescriptorSets(device, 1, &writeDescriptorSet, 0, nullptr);
/*
Pipeline layout
*/
VkPushConstantRange pushConstantRange{ VK_SHADER_STAGE_VERTEX_BIT, 0, sizeof(PushConstBlock) };
VkPipelineLayoutCreateInfo pipelineLayoutCI{};
pipelineLayoutCI.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO;
pipelineLayoutCI.pushConstantRangeCount = 1;
pipelineLayoutCI.pPushConstantRanges = &pushConstantRange;
pipelineLayoutCI.setLayoutCount = 1;
pipelineLayoutCI.pSetLayouts = &descriptorSetLayout;
pipelineLayoutCI.pushConstantRangeCount = 1;
pipelineLayoutCI.pPushConstantRanges = &pushConstantRange;
VK_CHECK_RESULT(vkCreatePipelineLayout(device, &pipelineLayoutCI, nullptr, &pipelineLayout));
/*
Pipeline
*/
VkPipelineInputAssemblyStateCreateInfo inputAssemblyStateCI{};
inputAssemblyStateCI.sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO;
inputAssemblyStateCI.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST;
VkPipelineRasterizationStateCreateInfo rasterizationStateCI{};
rasterizationStateCI.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO;
rasterizationStateCI.polygonMode = VK_POLYGON_MODE_FILL;
rasterizationStateCI.cullMode = VK_CULL_MODE_NONE;
rasterizationStateCI.frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE;
rasterizationStateCI.lineWidth = 1.0f;
VkPipelineColorBlendAttachmentState blendAttachmentState{};
blendAttachmentState.colorWriteMask = VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT | VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT;
blendAttachmentState.blendEnable = VK_TRUE;
blendAttachmentState.srcColorBlendFactor = VK_BLEND_FACTOR_SRC_ALPHA;
blendAttachmentState.dstColorBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA;
blendAttachmentState.colorBlendOp = VK_BLEND_OP_ADD;
blendAttachmentState.srcAlphaBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA;
blendAttachmentState.dstAlphaBlendFactor = VK_BLEND_FACTOR_ZERO;
blendAttachmentState.alphaBlendOp = VK_BLEND_OP_ADD;
VkPipelineColorBlendStateCreateInfo colorBlendStateCI{};
colorBlendStateCI.sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO;
colorBlendStateCI.attachmentCount = 1;
colorBlendStateCI.pAttachments = &blendAttachmentState;
VkPipelineDepthStencilStateCreateInfo depthStencilStateCI{};
depthStencilStateCI.sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO;
depthStencilStateCI.depthTestEnable = VK_FALSE;
depthStencilStateCI.depthWriteEnable = VK_FALSE;
depthStencilStateCI.depthCompareOp = VK_COMPARE_OP_LESS_OR_EQUAL;
depthStencilStateCI.front = depthStencilStateCI.back;
depthStencilStateCI.back.compareOp = VK_COMPARE_OP_ALWAYS;
VkPipelineViewportStateCreateInfo viewportStateCI{};
viewportStateCI.sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO;
viewportStateCI.viewportCount = 1;
viewportStateCI.scissorCount = 1;
VkPipelineMultisampleStateCreateInfo multisampleStateCI{};
multisampleStateCI.sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO;
if (multiSampleCount > VK_SAMPLE_COUNT_1_BIT) {
multisampleStateCI.rasterizationSamples = multiSampleCount;
}
std::vector<VkDynamicState> dynamicStateEnables = {
VK_DYNAMIC_STATE_VIEWPORT,
VK_DYNAMIC_STATE_SCISSOR
};
VkPipelineDynamicStateCreateInfo dynamicStateCI{};
dynamicStateCI.sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO;
dynamicStateCI.pDynamicStates = dynamicStateEnables.data();
dynamicStateCI.dynamicStateCount = static_cast<uint32_t>(dynamicStateEnables.size());
VkVertexInputBindingDescription vertexInputBinding = { 0, 20, VK_VERTEX_INPUT_RATE_VERTEX };
std::vector<VkVertexInputAttributeDescription> vertexInputAttributes = {
{ 0, 0, VK_FORMAT_R32G32_SFLOAT, 0 },
{ 1, 0, VK_FORMAT_R32G32_SFLOAT, sizeof(float) * 2 },
{ 2, 0, VK_FORMAT_R8G8B8A8_UNORM, sizeof(float) * 4 },
};
VkPipelineVertexInputStateCreateInfo vertexInputStateCI{};
vertexInputStateCI.sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO;
vertexInputStateCI.vertexBindingDescriptionCount = 1;
vertexInputStateCI.pVertexBindingDescriptions = &vertexInputBinding;
vertexInputStateCI.vertexAttributeDescriptionCount = static_cast<uint32_t>(vertexInputAttributes.size());
vertexInputStateCI.pVertexAttributeDescriptions = vertexInputAttributes.data();
std::array<VkPipelineShaderStageCreateInfo, 2> shaderStages;
VkGraphicsPipelineCreateInfo pipelineCI{};
pipelineCI.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO;
pipelineCI.layout = pipelineLayout;
pipelineCI.renderPass = renderPass;
pipelineCI.pInputAssemblyState = &inputAssemblyStateCI;
pipelineCI.pVertexInputState = &vertexInputStateCI;
pipelineCI.pRasterizationState = &rasterizationStateCI;
pipelineCI.pColorBlendState = &colorBlendStateCI;
pipelineCI.pMultisampleState = &multisampleStateCI;
pipelineCI.pViewportState = &viewportStateCI;
pipelineCI.pDepthStencilState = &depthStencilStateCI;
pipelineCI.pDynamicState = &dynamicStateCI;
pipelineCI.stageCount = static_cast<uint32_t>(shaderStages.size());
pipelineCI.pStages = shaderStages.data();
pipelineCI.layout = pipelineLayout;
std::string uiVertShaderPath = getAssetPath() + "shaders/ui.vert.spv";
std::string uiFragShaderPath = getAssetPath() + "shaders/ui.frag.spv";
shaderStages = {
loadShader(device, uiVertShaderPath.data(), VK_SHADER_STAGE_VERTEX_BIT),
loadShader(device, uiFragShaderPath.data(), VK_SHADER_STAGE_FRAGMENT_BIT)
};
VK_CHECK_RESULT(vkCreateGraphicsPipelines(device, pipelineCache, 1, &pipelineCI, nullptr, &pipeline));
for (auto shaderStage : shaderStages) {
vkDestroyShaderModule(device, shaderStage.module, nullptr);
}
}
~UI() {
ImGui::DestroyContext();
vertexBuffer.destroy();
indexBuffer.destroy();
vkDestroyPipeline(device, pipeline, nullptr);
vkDestroyPipelineLayout(device, pipelineLayout, nullptr);
vkDestroyDescriptorSetLayout(device, descriptorSetLayout, nullptr);
vkDestroyDescriptorPool(device, descriptorPool, nullptr);
}
void draw(VkCommandBuffer cmdBuffer) {
vkCmdBindPipeline(cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline);
vkCmdBindDescriptorSets(cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, pipelineLayout, 0, 1, &descriptorSet, 0, nullptr);
const VkDeviceSize offsets[1] = { 0 };
vkCmdBindVertexBuffers(cmdBuffer, 0, 1, &vertexBuffer.buffer, offsets);
vkCmdBindIndexBuffer(cmdBuffer, indexBuffer.buffer, 0, VK_INDEX_TYPE_UINT16);
vkCmdPushConstants(cmdBuffer, pipelineLayout, VK_SHADER_STAGE_VERTEX_BIT, 0, sizeof(UI::PushConstBlock), &pushConstBlock);
ImDrawData* imDrawData = ImGui::GetDrawData();
int32_t vertexOffset = 0;
int32_t indexOffset = 0;
for (int32_t j = 0; j < imDrawData->CmdListsCount; j++) {
const ImDrawList* cmd_list = imDrawData->CmdLists[j];
for (int32_t k = 0; k < cmd_list->CmdBuffer.Size; k++) {
const ImDrawCmd* pcmd = &cmd_list->CmdBuffer[k];
VkRect2D scissorRect;
scissorRect.offset.x = std::max((int32_t)(pcmd->ClipRect.x), 0);
scissorRect.offset.y = std::max((int32_t)(pcmd->ClipRect.y), 0);
scissorRect.extent.width = (uint32_t)(pcmd->ClipRect.z - pcmd->ClipRect.x);
scissorRect.extent.height = (uint32_t)(pcmd->ClipRect.w - pcmd->ClipRect.y);
vkCmdSetScissor(cmdBuffer, 0, 1, &scissorRect);
vkCmdDrawIndexed(cmdBuffer, pcmd->ElemCount, 1, indexOffset, vertexOffset, 0);
indexOffset += pcmd->ElemCount;
}
vertexOffset += cmd_list->VtxBuffer.Size;
}
}
template<typename T>
bool checkbox(const char* caption, T *value) {
bool val = (*value == 1);
bool res = ImGui::Checkbox(caption, &val);
*value = val;
return res;
}
bool header(const char *caption) {
return ImGui::CollapsingHeader(caption, ImGuiTreeNodeFlags_DefaultOpen);
}
bool slider(const char* caption, float* value, float min, float max) {
return ImGui::SliderFloat(caption, value, min, max);
}
bool combo(const char *caption, int32_t *itemindex, std::vector<std::string> items) {
if (items.empty()) {
return false;
}
std::vector<const char*> charitems;
charitems.reserve(items.size());
for (size_t i = 0; i < items.size(); i++) {
charitems.push_back(items[i].c_str());
}
uint32_t itemCount = static_cast<uint32_t>(charitems.size());
return ImGui::Combo(caption, itemindex, &charitems[0], itemCount, itemCount);
}
bool combo(const char *caption, std::string &selectedkey, std::map<std::string, std::string> items) {
bool selectionChanged = false;
if (ImGui::BeginCombo(caption, selectedkey.c_str())) {
for (auto it = items.begin(); it != items.end(); ++it) {
const bool isSelected = it->first == selectedkey;
if (ImGui::Selectable(it->first.c_str(), isSelected)) {
selectionChanged = it->first != selectedkey;
selectedkey = it->first;
}
if (isSelected) {
ImGui::SetItemDefaultFocus();
}
}
ImGui::EndCombo();
}
return selectionChanged;
}
bool button(const char *caption) {
return ImGui::Button(caption);
}
void text(const char *formatstr, ...) {
va_list args;
va_start(args, formatstr);
ImGui::TextV(formatstr, args);
va_end(args);
}
};

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
/*
* Vulkan Example base class
*
* Copyright (C) 2016 by Sascha Willems - www.saschawillems.de
* Copyright (C) by Sascha Willems - www.saschawillems.de
*
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
*/
@ -13,156 +13,252 @@
#include <windows.h>
#include <fcntl.h>
#include <io.h>
#include <ShellScalingAPI.h>
#elif defined(VK_USE_PLATFORM_ANDROID_KHR)
#include <android/native_activity.h>
#include <android/asset_manager.h>
#include <android_native_app_glue.h>
#include <sys/system_properties.h>
#include "VulkanAndroid.h"
#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT)
#include <directfb.h>
#elif defined(VK_USE_PLATFORM_WAYLAND_KHR)
#include <wayland-client.h>
#include "xdg-shell-client-protocol.h"
#elif defined(_DIRECT2DISPLAY)
//
#elif defined(VK_USE_PLATFORM_XCB_KHR)
#include <xcb/xcb.h>
#elif defined(VK_USE_PLATFORM_MACOS_MVK)
#include <Cocoa/Cocoa.h>
#include <Carbon/Carbon.h>
#include <QuartzCore/CAMetalLayer.h>
#include <CoreVideo/CVDisplayLink.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <vector>
#include <array>
#include <unordered_map>
#include <numeric>
#include <ctime>
#include <iostream>
#include <chrono>
#include <random>
#include <algorithm>
#include <sys/stat.h>
#define GLM_FORCE_RADIANS
#define GLM_FORCE_DEPTH_ZERO_TO_ONE
#define GLM_ENABLE_EXPERIMENTAL
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/matrix_inverse.hpp>
#include <glm/gtc/type_ptr.hpp>
#include <string>
#include <sstream>
#include <array>
#include <numeric>
#include <array>
#include "vulkan/vulkan.h"
#include "VulkanTools.h"
#include "camera.hpp"
#include "CommandLineParser.hpp"
#include "keycodes.hpp"
#include "VulkanTools.h"
#include "VulkanDebug.h"
#include "VulkanUIOverlay.h"
#include "VulkanSwapChain.h"
#include "VulkanBuffer.h"
#include "VulkanDevice.h"
#include "VulkanTexture.h"
#include "VulkanDevice.hpp"
#include "VulkanSwapChain.hpp"
#include "imgui/imgui.h"
#include "VulkanInitializers.hpp"
#include "camera.hpp"
#include "benchmark.hpp"
class VulkanExampleBase
{
private:
float fpsTimer = 0.0f;
uint32_t frameCounter = 0;
private:
std::string getWindowTitle();
uint32_t destWidth;
uint32_t destHeight;
bool resizing = false;
void handleMouseMove(int32_t x, int32_t y);
PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallback;
PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallback;
VkDebugReportCallbackEXT debugReportCallback;
struct MultisampleTarget {
struct {
VkImage image;
VkImageView view;
VkDeviceMemory memory;
} color;
struct {
VkImage image;
VkImageView view;
VkDeviceMemory memory;
} depth;
} multisampleTarget;
protected:
VkInstance instance;
VkPhysicalDevice physicalDevice;
VkPhysicalDeviceProperties deviceProperties;
VkPhysicalDeviceFeatures deviceFeatures;
VkPhysicalDeviceMemoryProperties deviceMemoryProperties;
VkDevice device;
vks::VulkanDevice *vulkanDevice;
VkQueue queue;
VkFormat depthFormat;
VkCommandPool cmdPool;
VkRenderPass renderPass;
std::vector<VkFramebuffer>frameBuffers;
uint32_t currentBuffer = 0;
VkDescriptorPool descriptorPool;
VkPipelineCache pipelineCache;
VulkanSwapChain swapChain;
std::string title = "Vulkan Example";
std::string name = "vulkanExample";
void windowResize();
public:
static std::vector<const char*> args;
void handleMouseMove(int32_t x, int32_t y);
void nextFrame();
void updateOverlay();
void createPipelineCache();
void createCommandPool();
void createSynchronizationPrimitives();
void initSwapchain();
void setupSwapChain();
void createCommandBuffers();
void destroyCommandBuffers();
std::string shaderDir = "glsl";
protected:
// Returns the path to the root of the glsl or hlsl shader directory.
std::string getShadersPath() const;
// Returns the path to the root of the homework glsl or hlsl shader directory.
std::string getHomeworkShadersPath() const;
// Frame counter to display fps
uint32_t frameCounter = 0;
uint32_t lastFPS = 0;
std::chrono::time_point<std::chrono::high_resolution_clock> lastTimestamp, tPrevEnd;
// Vulkan instance, stores all per-application states
VkInstance instance;
std::vector<std::string> supportedInstanceExtensions;
// Physical device (GPU) that Vulkan will use
VkPhysicalDevice physicalDevice;
// Stores physical device properties (for e.g. checking device limits)
VkPhysicalDeviceProperties deviceProperties;
// Stores the features available on the selected physical device (for e.g. checking if a feature is available)
VkPhysicalDeviceFeatures deviceFeatures;
// Stores all available memory (type) properties for the physical device
VkPhysicalDeviceMemoryProperties deviceMemoryProperties;
/** @brief Set of physical device features to be enabled for this example (must be set in the derived constructor) */
VkPhysicalDeviceFeatures enabledFeatures{};
/** @brief Set of device extensions to be enabled for this example (must be set in the derived constructor) */
std::vector<const char*> enabledDeviceExtensions;
std::vector<const char*> enabledInstanceExtensions;
/** @brief Optional pNext structure for passing extension structures to device creation */
void* deviceCreatepNextChain = nullptr;
/** @brief Logical device, application's view of the physical device (GPU) */
VkDevice device;
// Handle to the device graphics queue that command buffers are submitted to
VkQueue queue;
// Depth buffer format (selected during Vulkan initialization)
VkFormat depthFormat;
// Command buffer pool
VkCommandPool cmdPool;
/** @brief Pipeline stages used to wait at for graphics queue submissions */
VkPipelineStageFlags submitPipelineStages = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
// Contains command buffers and semaphores to be presented to the queue
VkSubmitInfo submitInfo;
// Command buffers used for rendering
std::vector<VkCommandBuffer> drawCmdBuffers;
// Global render pass for frame buffer writes
VkRenderPass renderPass = VK_NULL_HANDLE;
// List of available frame buffers (same as number of swap chain images)
std::vector<VkFramebuffer>frameBuffers;
// Active frame buffer index
uint32_t currentBuffer = 0;
// Descriptor set pool
VkDescriptorPool descriptorPool = VK_NULL_HANDLE;
// List of shader modules created (stored for cleanup)
std::vector<VkShaderModule> shaderModules;
// Pipeline cache object
VkPipelineCache pipelineCache;
// Wraps the swap chain to present images (framebuffers) to the windowing system
VulkanSwapChain swapChain;
// Synchronization semaphores
struct {
// Swap chain image presentation
VkSemaphore presentComplete;
// Command buffer submission and execution
VkSemaphore renderComplete;
} semaphores;
std::vector<VkFence> waitFences;
public:
bool prepared = false;
bool resized = false;
bool viewUpdated = false;
uint32_t width = 1280;
uint32_t height = 720;
vks::UIOverlay UIOverlay;
CommandLineParser commandLineParser;
/** @brief Last frame time measured using a high performance timer (if available) */
float frameTimer = 1.0f;
vks::Benchmark benchmark;
/** @brief Encapsulated physical and logical vulkan device */
vks::VulkanDevice *vulkanDevice;
/** @brief Example settings that can be changed e.g. by command line arguments */
struct Settings {
/** @brief Activates validation layers (and message output) when set to true */
bool validation = false;
/** @brief Set to true if fullscreen mode has been requested via command line */
bool fullscreen = false;
/** @brief Set to true if v-sync will be forced for the swapchain */
bool vsync = false;
/** @brief Enable UI overlay */
bool overlay = true;
} settings;
VkClearColorValue defaultClearColor = { { 0.025f, 0.025f, 0.025f, 1.0f } };
static std::vector<const char*> args;
// Defines a frame rate independent timer value clamped from -1.0...1.0
// For use in animations, rotations, etc.
float timer = 0.0f;
// Multiplier for speeding up (or slowing down) the global timer
float timerSpeed = 0.25f;
bool paused = false;
Camera camera;
glm::vec2 mousePos;
bool paused = false;
uint32_t lastFPS = 0;
struct Settings {
bool validation = false;
bool fullscreen = false;
bool vsync = false;
bool multiSampling = true;
VkSampleCountFlagBits sampleCount = VK_SAMPLE_COUNT_4_BIT;
} settings;
struct DepthStencil {
std::string title = "Vulkan Example";
std::string name = "vulkanExample";
uint32_t apiVersion = VK_API_VERSION_1_0;
struct {
VkImage image;
VkDeviceMemory mem;
VkImageView view;
} depthStencil;
struct GamePadState {
struct {
glm::vec2 axisLeft = glm::vec2(0.0f);
glm::vec2 axisRight = glm::vec2(0.0f);
} gamePadState;
struct MouseButtons {
struct {
bool left = false;
bool right = false;
bool middle = false;
} mouseButtons;
// OS specific
// OS specific
#if defined(_WIN32)
HWND window;
HINSTANCE windowInstance;
#elif defined(VK_USE_PLATFORM_ANDROID_KHR)
// true if application has focused, false if moved to background
bool focused = false;
std::string androidProduct;
struct TouchPoint {
int32_t id;
float x;
float y;
bool down = false;
};
float pinchDist = 0.0f;
std::array<TouchPoint, 2> touchPoints;
struct TouchPos {
int32_t x;
int32_t y;
} touchPos;
bool touchDown = false;
double touchTimer = 0.0;
int64_t lastTapTime = 0;
#elif (defined(VK_USE_PLATFORM_IOS_MVK) || defined(VK_USE_PLATFORM_MACOS_MVK))
void* view;
#if defined(VK_EXAMPLE_XCODE_GENERATED)
bool quit = false;
#endif
#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT)
bool quit = false;
IDirectFB *dfb = nullptr;
IDirectFBDisplayLayer *layer = nullptr;
IDirectFBWindow *window = nullptr;
IDirectFBSurface *surface = nullptr;
IDirectFBEventBuffer *event_buffer = nullptr;
#elif defined(VK_USE_PLATFORM_WAYLAND_KHR)
wl_display *display = nullptr;
wl_registry *registry = nullptr;
wl_compositor *compositor = nullptr;
wl_shell *shell = nullptr;
struct xdg_wm_base *shell = nullptr;
wl_seat *seat = nullptr;
wl_pointer *pointer = nullptr;
wl_keyboard *keyboard = nullptr;
wl_surface *surface = nullptr;
wl_shell_surface *shell_surface = nullptr;
struct xdg_surface *xdg_surface;
struct xdg_toplevel *xdg_toplevel;
bool quit = false;
bool configured = false;
#elif defined(_DIRECT2DISPLAY)
bool quit = false;
@ -172,19 +268,36 @@ public:
xcb_screen_t *screen;
xcb_window_t window;
xcb_intern_atom_reply_t *atom_wm_delete_window;
#elif defined(VK_USE_PLATFORM_MACOS_MVK)
NSWindow* window;
#elif defined(VK_USE_PLATFORM_HEADLESS_EXT)
bool quit = false;
#endif
VulkanExampleBase(bool enableValidation = false);
virtual ~VulkanExampleBase();
/** @brief Setup the vulkan instance, enable required extensions and connect to the physical device (GPU) */
bool initVulkan();
#if defined(_WIN32)
void setupConsole(std::string title);
void setupDPIAwareness();
HWND setupWindow(HINSTANCE hinstance, WNDPROC wndproc);
void handleMessages(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
#elif defined(VK_USE_PLATFORM_ANDROID_KHR)
static int32_t handleAppInput(struct android_app* app, AInputEvent* event);
static void handleAppCommand(android_app* app, int32_t cmd);
#elif (defined(VK_USE_PLATFORM_IOS_MVK) || defined(VK_USE_PLATFORM_MACOS_MVK))
void* setupWindow(void* view);
void displayLinkOutputCb();
void mouseDragged(float x, float y);
void windowWillResize(float x, float y);
void windowDidResize();
#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT)
IDirectFBSurface *setupWindow();
void handleEvent(const DFBWindowEvent *event);
#elif defined(VK_USE_PLATFORM_WAYLAND_KHR)
wl_shell_surface *setupWindow();
struct xdg_surface *setupWindow();
void initWaylandConnection();
void setSize(int width, int height);
static void registryGlobalCb(void *data, struct wl_registry *registry,
uint32_t name, const char *interface, uint32_t version);
void registryGlobal(struct wl_registry *registry, uint32_t name,
@ -230,28 +343,192 @@ public:
xcb_window_t setupWindow();
void initxcbConnection();
void handleEvent(const xcb_generic_event_t *event);
#elif defined(VK_USE_PLATFORM_MACOS_MVK)
NSWindow* setupWindow();
void mouseDragged(float x, float y);
void windowWillResize(float x, float y);
void windowDidResize();
#else
void setupWindow();
#endif
VulkanExampleBase();
virtual ~VulkanExampleBase();
void initVulkan();
/** @brief (Virtual) Creates the application wide Vulkan instance */
virtual VkResult createInstance(bool enableValidation);
/** @brief (Pure virtual) Render function to be implemented by the sample application */
virtual void render() = 0;
/** @brief (Virtual) Called when the camera view has changed */
virtual void viewChanged();
/** @brief (Virtual) Called after a key was pressed, can be used to do custom key handling */
virtual void keyPressed(uint32_t);
/** @brief (Virtual) Called after the mouse cursor moved and before internal events (like camera rotation) is handled */
virtual void mouseMoved(double x, double y, bool &handled);
/** @brief (Virtual) Called when the window has been resized, can be used by the sample application to recreate resources */
virtual void windowResized();
/** @brief (Virtual) Called when resources have been recreated that require a rebuild of the command buffers (e.g. frame buffer), to be implemented by the sample application */
virtual void buildCommandBuffers();
/** @brief (Virtual) Setup default depth and stencil views */
virtual void setupDepthStencil();
/** @brief (Virtual) Setup default framebuffers for all requested swapchain images */
virtual void setupFrameBuffer();
/** @brief (Virtual) Setup a default renderpass */
virtual void setupRenderPass();
/** @brief (Virtual) Called after the physical device features have been read, can be used to set features to enable on the device */
virtual void getEnabledFeatures();
/** @brief (Virtual) Called after the physical device extensions have been read, can be used to enable extensions based on the supported extension listing*/
virtual void getEnabledExtensions();
/** @brief Prepares all Vulkan resources and functions required to run the sample */
virtual void prepare();
virtual void fileDropped(std::string filename);
void initSwapchain();
void setupSwapChain();
/** @brief Loads a SPIR-V shader file for the given shader stage */
VkPipelineShaderStageCreateInfo loadShader(std::string fileName, VkShaderStageFlagBits stage);
/** @brief Entry point for the main render loop */
void renderLoop();
void renderFrame();
/** @brief Adds the drawing commands for the ImGui overlay to the given command buffer */
void drawUI(const VkCommandBuffer commandBuffer);
/** Prepare the next frame for workload submission by acquiring the next swap chain image */
void prepareFrame();
/** @brief Presents the current image to the swap chain */
void submitFrame();
/** @brief (Virtual) Default image acquire + submission and command buffer submission function */
virtual void renderFrame();
/** @brief (Virtual) Called when the UI overlay is updating, can be used to add custom elements to the overlay */
virtual void OnUpdateUIOverlay(vks::UIOverlay *overlay);
#if defined(_WIN32)
virtual void OnHandleMessage(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
#endif
};
// OS specific macros for the example main entry points
#if defined(_WIN32)
// Windows entry point
#define VULKAN_EXAMPLE_MAIN() \
VulkanExample *vulkanExample; \
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) \
{ \
if (vulkanExample != NULL) \
{ \
vulkanExample->handleMessages(hWnd, uMsg, wParam, lParam); \
} \
return (DefWindowProc(hWnd, uMsg, wParam, lParam)); \
} \
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int) \
{ \
for (int32_t i = 0; i < __argc; i++) { VulkanExample::args.push_back(__argv[i]); }; \
vulkanExample = new VulkanExample(); \
vulkanExample->initVulkan(); \
vulkanExample->setupWindow(hInstance, WndProc); \
vulkanExample->prepare(); \
vulkanExample->renderLoop(); \
delete(vulkanExample); \
return 0; \
}
#elif defined(VK_USE_PLATFORM_ANDROID_KHR)
// Android entry point
#define VULKAN_EXAMPLE_MAIN() \
VulkanExample *vulkanExample; \
void android_main(android_app* state) \
{ \
vulkanExample = new VulkanExample(); \
state->userData = vulkanExample; \
state->onAppCmd = VulkanExample::handleAppCommand; \
state->onInputEvent = VulkanExample::handleAppInput; \
androidApp = state; \
vks::android::getDeviceConfig(); \
vulkanExample->renderLoop(); \
delete(vulkanExample); \
}
#elif defined(_DIRECT2DISPLAY)
// Linux entry point with direct to display wsi
#define VULKAN_EXAMPLE_MAIN() \
VulkanExample *vulkanExample; \
static void handleEvent() \
{ \
} \
int main(const int argc, const char *argv[]) \
{ \
for (size_t i = 0; i < argc; i++) { VulkanExample::args.push_back(argv[i]); }; \
vulkanExample = new VulkanExample(); \
vulkanExample->initVulkan(); \
vulkanExample->prepare(); \
vulkanExample->renderLoop(); \
delete(vulkanExample); \
return 0; \
}
#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT)
#define VULKAN_EXAMPLE_MAIN() \
VulkanExample *vulkanExample; \
static void handleEvent(const DFBWindowEvent *event) \
{ \
if (vulkanExample != NULL) \
{ \
vulkanExample->handleEvent(event); \
} \
} \
int main(const int argc, const char *argv[]) \
{ \
for (size_t i = 0; i < argc; i++) { VulkanExample::args.push_back(argv[i]); }; \
vulkanExample = new VulkanExample(); \
vulkanExample->initVulkan(); \
vulkanExample->setupWindow(); \
vulkanExample->prepare(); \
vulkanExample->renderLoop(); \
delete(vulkanExample); \
return 0; \
}
#elif (defined(VK_USE_PLATFORM_WAYLAND_KHR) || defined(VK_USE_PLATFORM_HEADLESS_EXT))
#define VULKAN_EXAMPLE_MAIN() \
VulkanExample *vulkanExample; \
int main(const int argc, const char *argv[]) \
{ \
for (size_t i = 0; i < argc; i++) { VulkanExample::args.push_back(argv[i]); }; \
vulkanExample = new VulkanExample(); \
vulkanExample->initVulkan(); \
vulkanExample->setupWindow(); \
vulkanExample->prepare(); \
vulkanExample->renderLoop(); \
delete(vulkanExample); \
return 0; \
}
#elif defined(VK_USE_PLATFORM_XCB_KHR)
#define VULKAN_EXAMPLE_MAIN() \
VulkanExample *vulkanExample; \
static void handleEvent(const xcb_generic_event_t *event) \
{ \
if (vulkanExample != NULL) \
{ \
vulkanExample->handleEvent(event); \
} \
} \
int main(const int argc, const char *argv[]) \
{ \
for (size_t i = 0; i < argc; i++) { VulkanExample::args.push_back(argv[i]); }; \
vulkanExample = new VulkanExample(); \
vulkanExample->initVulkan(); \
vulkanExample->setupWindow(); \
vulkanExample->prepare(); \
vulkanExample->renderLoop(); \
delete(vulkanExample); \
return 0; \
}
#elif (defined(VK_USE_PLATFORM_IOS_MVK) || defined(VK_USE_PLATFORM_MACOS_MVK))
#if defined(VK_EXAMPLE_XCODE_GENERATED)
#define VULKAN_EXAMPLE_MAIN() \
VulkanExample *vulkanExample; \
int main(const int argc, const char *argv[]) \
{ \
@autoreleasepool \
{ \
for (size_t i = 0; i < argc; i++) { VulkanExample::args.push_back(argv[i]); }; \
vulkanExample = new VulkanExample(); \
vulkanExample->initVulkan(); \
vulkanExample->setupWindow(nullptr); \
vulkanExample->prepare(); \
vulkanExample->renderLoop(); \
delete(vulkanExample); \
} \
return 0; \
}
#else
#define VULKAN_EXAMPLE_MAIN()
#endif
#endif

View File

@ -1,17 +0,0 @@
clone_folder: c:\dev\gli-cmake
os:
- Visual Studio 2013
platform:
- x86
- x86_64
build_script:
- md build
- cd build
- cmake -DCMAKE_CXX_COMPILER=$COMPILER ..
- cmake --build . --config Debug
- cmake --build . --config Release
- cd ..

View File

@ -1,5 +0,0 @@
build/
*~
*.swp
*.swo

View File

@ -1,38 +0,0 @@
dist: trusty
language: cpp
matrix:
include:
- compiler: gcc
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-4.9
env: COMPILER=g++-4.9
- compiler: clang
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.8
packages:
- clang-3.8
env: COMPILER=clang++-3.8
compiler:
- clang
before_script:
- cmake --version
script:
- mkdir ./build
- cd ./build
- cmake -DCMAKE_CXX_COMPILER=$COMPILER ..
- cmake --build .
- ctest
- cd ..

View File

@ -1,129 +0,0 @@
cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
cmake_policy(SET CMP0054 NEW)
project(gli)
set(GLI_VERSION "0.8.2")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)
enable_testing()
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
add_definitions(-DSOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}")
include_directories(".")
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
# To generate .asm files: /FAs
add_definitions(/Za)
endif()
if(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR (("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") AND UNIX))
set(CMAKE_CXX_FLAGS "-std=c++0x")
add_definitions(-Wall)
endif()
################################
# Add source files
file(GLOB ROOT_SOURCE ./gli/*.cpp)
file(GLOB ROOT_INLINE ./gli/*.inl)
file(GLOB ROOT_HEADER ./gli/*.hpp)
file(GLOB ROOT_TEXT ./*.txt)
file(GLOB ROOT_MD ../*.md)
file(GLOB ROOT_KMG ./doc/spec/*.html)
file(GLOB_RECURSE CORE_SOURCE ./gli/core/*.cpp)
file(GLOB_RECURSE CORE_INLINE ./gli/core/*.inl)
file(GLOB_RECURSE CORE_HEADER ./gli/core/*.hpp)
file(GLOB_RECURSE GTX_SOURCE ./gli/gtx/*.cpp)
file(GLOB_RECURSE GTX_INLINE ./gli/gtx/*.inl)
file(GLOB_RECURSE GTX_HEADER ./gli/gtx/*.hpp)
source_group("KMG Spec" FILES ${ROOT_KMG})
source_group("Text Files" FILES ${ROOT_TEXT} ${ROOT_MD})
source_group("Core Files" FILES ${CORE_SOURCE})
source_group("Core Files" FILES ${CORE_INLINE})
source_group("Core Files" FILES ${CORE_HEADER})
source_group("GTX Files" FILES ${GTX_SOURCE})
source_group("GTX Files" FILES ${GTX_INLINE})
source_group("GTX Files" FILES ${GTX_HEADER})
################################
# Add package
macro(addExternalPackageGTC NAME DIRECTORY)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/external/${DIRECTORY}/util)
set(${NAME}_PACKAGE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/${DIRECTORY})
find_package(${NAME})
if(NOT ${NAME}_FOUND)
message("ERROR: ${NAME} not found")
endif(NOT ${NAME}_FOUND)
endmacro(addExternalPackageGTC)
################################
# Add subdirectory
add_subdirectory(gli)
add_subdirectory(test)
#add_subdirectory(doc)
################################
# Add installer
set(GLI_INSTALL_CONFIGDIR "${CMAKE_INSTALL_LIBDIR}/cmake/gli")
install(DIRECTORY gli DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/gliVersion.cmake"
VERSION ${GLI_VERSION}
COMPATIBILITY AnyNewerVersion
)
# build tree package config
configure_file(
cmake/gliBuildConfig.cmake.in
gliConfig.cmake
@ONLY
)
# install tree package config
configure_package_config_file(
cmake/gliConfig.cmake.in
${GLI_INSTALL_CONFIGDIR}/gliConfig.cmake
INSTALL_DESTINATION ${GLI_INSTALL_CONFIGDIR}
PATH_VARS CMAKE_INSTALL_INCLUDEDIR
NO_CHECK_REQUIRED_COMPONENTS_MACRO
)
install(
FILES
"${CMAKE_CURRENT_BINARY_DIR}/${GLI_INSTALL_CONFIGDIR}/gliConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/gliVersion.cmake"
DESTINATION ${GLI_INSTALL_CONFIGDIR}
)
add_library(gli INTERFACE)
target_include_directories(gli INTERFACE
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/external>
)
install(TARGETS gli EXPORT gliTargets)
export(
EXPORT gliTargets
FILE "${CMAKE_CURRENT_BINARY_DIR}/gliTargets.cmake"
)
install(
EXPORT gliTargets FILE gliTargets.cmake
DESTINATION ${GLI_INSTALL_CONFIGDIR}
)
export(PACKAGE gli)

View File

@ -1,227 +0,0 @@
# - CONFIGURE_PACKAGE_CONFIG_FILE(), WRITE_BASIC_PACKAGE_VERSION_FILE()
#
# CONFIGURE_PACKAGE_CONFIG_FILE(<input> <output> INSTALL_DESTINATION <path>
# [PATH_VARS <var1> <var2> ... <varN>]
# [NO_SET_AND_CHECK_MACRO]
# [NO_CHECK_REQUIRED_COMPONENTS_MACRO])
#
# CONFIGURE_PACKAGE_CONFIG_FILE() should be used instead of the plain
# CONFIGURE_FILE() command when creating the <Name>Config.cmake or <Name>-config.cmake
# file for installing a project or library. It helps making the resulting package
# relocatable by avoiding hardcoded paths in the installed Config.cmake file.
#
# In a FooConfig.cmake file there may be code like this to make the
# install destinations know to the using project:
# set(FOO_INCLUDE_DIR "@CMAKE_INSTALL_FULL_INCLUDEDIR@" )
# set(FOO_DATA_DIR "@CMAKE_INSTALL_PREFIX@/@RELATIVE_DATA_INSTALL_DIR@" )
# set(FOO_ICONS_DIR "@CMAKE_INSTALL_PREFIX@/share/icons" )
# ...logic to determine installedPrefix from the own location...
# set(FOO_CONFIG_DIR "${installedPrefix}/@CONFIG_INSTALL_DIR@" )
# All 4 options shown above are not sufficient, since the first 3 hardcode
# the absolute directory locations, and the 4th case works only if the logic
# to determine the installedPrefix is correct, and if CONFIG_INSTALL_DIR contains
# a relative path, which in general cannot be guaranteed.
# This has the effect that the resulting FooConfig.cmake file would work poorly
# under Windows and OSX, where users are used to choose the install location
# of a binary package at install time, independent from how CMAKE_INSTALL_PREFIX
# was set at build/cmake time.
#
# Using CONFIGURE_PACKAGE_CONFIG_FILE() helps. If used correctly, it makes the
# resulting FooConfig.cmake file relocatable.
# Usage:
# 1. write a FooConfig.cmake.in file as you are used to
# 2. insert a line containing only the string "@PACKAGE_INIT@"
# 3. instead of SET(FOO_DIR "@SOME_INSTALL_DIR@"), use SET(FOO_DIR "@PACKAGE_SOME_INSTALL_DIR@")
# (this must be after the @PACKAGE_INIT@ line)
# 4. instead of using the normal CONFIGURE_FILE(), use CONFIGURE_PACKAGE_CONFIG_FILE()
#
# The <input> and <output> arguments are the input and output file, the same way
# as in CONFIGURE_FILE().
#
# The <path> given to INSTALL_DESTINATION must be the destination where the FooConfig.cmake
# file will be installed to. This can either be a relative or absolute path, both work.
#
# The variables <var1> to <varN> given as PATH_VARS are the variables which contain
# install destinations. For each of them the macro will create a helper variable
# PACKAGE_<var...>. These helper variables must be used
# in the FooConfig.cmake.in file for setting the installed location. They are calculated
# by CONFIGURE_PACKAGE_CONFIG_FILE() so that they are always relative to the
# installed location of the package. This works both for relative and also for absolute locations.
# For absolute locations it works only if the absolute location is a subdirectory
# of CMAKE_INSTALL_PREFIX.
#
# By default configure_package_config_file() also generates two helper macros,
# set_and_check() and check_required_components() into the FooConfig.cmake file.
#
# set_and_check() should be used instead of the normal set()
# command for setting directories and file locations. Additionally to setting the
# variable it also checks that the referenced file or directory actually exists
# and fails with a FATAL_ERROR otherwise. This makes sure that the created
# FooConfig.cmake file does not contain wrong references.
# When using the NO_SET_AND_CHECK_MACRO, this macro is not generated into the
# FooConfig.cmake file.
#
# check_required_components(<package_name>) should be called at the end of the
# FooConfig.cmake file if the package supports components.
# This macro checks whether all requested, non-optional components have been found,
# and if this is not the case, sets the Foo_FOUND variable to FALSE, so that the package
# is considered to be not found.
# It does that by testing the Foo_<Component>_FOUND variables for all requested
# required components.
# When using the NO_CHECK_REQUIRED_COMPONENTS option, this macro is not generated
# into the FooConfig.cmake file.
#
# For an example see below the documentation for WRITE_BASIC_PACKAGE_VERSION_FILE().
#
#
# WRITE_BASIC_PACKAGE_VERSION_FILE( filename VERSION major.minor.patch COMPATIBILITY (AnyNewerVersion|SameMajorVersion|ExactVersion) )
#
# Writes a file for use as <package>ConfigVersion.cmake file to <filename>.
# See the documentation of FIND_PACKAGE() for details on this.
# filename is the output filename, it should be in the build tree.
# major.minor.patch is the version number of the project to be installed
# The COMPATIBILITY mode AnyNewerVersion means that the installed package version
# will be considered compatible if it is newer or exactly the same as the requested version.
# This mode should be used for packages which are fully backward compatible,
# also across major versions.
# If SameMajorVersion is used instead, then the behaviour differs from AnyNewerVersion
# in that the major version number must be the same as requested, e.g. version 2.0 will
# not be considered compatible if 1.0 is requested.
# This mode should be used for packages which guarantee backward compatibility within the
# same major version.
# If ExactVersion is used, then the package is only considered compatible if the requested
# version matches exactly its own version number (not considering the tweak version).
# For example, version 1.2.3 of a package is only considered compatible to requested version 1.2.3.
# This mode is for packages without compatibility guarantees.
# If your project has more elaborated version matching rules, you will need to write your
# own custom ConfigVersion.cmake file instead of using this macro.
#
# Internally, this macro executes configure_file() to create the resulting
# version file. Depending on the COMPATIBILITY, either the file
# BasicConfigVersion-SameMajorVersion.cmake.in or BasicConfigVersion-AnyNewerVersion.cmake.in
# is used. Please note that these two files are internal to CMake and you should
# not call configure_file() on them yourself, but they can be used as starting
# point to create more sophisticted custom ConfigVersion.cmake files.
#
#
# Example using both configure_package_config_file() and write_basic_package_version_file():
# CMakeLists.txt:
# set(INCLUDE_INSTALL_DIR include/ ... CACHE )
# set(LIB_INSTALL_DIR lib/ ... CACHE )
# set(SYSCONFIG_INSTALL_DIR etc/foo/ ... CACHE )
# ...
# include(CMakePackageConfigHelpers)
# configure_package_config_file(FooConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/FooConfig.cmake
# INSTALL_DESTINATION ${LIB_INSTALL_DIR}/Foo/cmake
# PATH_VARS INCLUDE_INSTALL_DIR SYSCONFIG_INSTALL_DIR)
# write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/FooConfigVersion.cmake
# VERSION 1.2.3
# COMPATIBILITY SameMajorVersion )
# install(FILES ${CMAKE_CURRENT_BINARY_DIR}/FooConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/FooConfigVersion.cmake
# DESTINATION ${LIB_INSTALL_DIR}/Foo/cmake )
#
# With a FooConfig.cmake.in:
# set(FOO_VERSION x.y.z)
# ...
# @PACKAGE_INIT@
# ...
# set_and_check(FOO_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@")
# set_and_check(FOO_SYSCONFIG_DIR "@PACKAGE_SYSCONFIG_INSTALL_DIR@")
#
# check_required_components(Foo)
#=============================================================================
# Copyright 2012 Alexander Neundorf <neundorf@kde.org>
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
include(CMakeParseArguments)
include(WriteBasicConfigVersionFile)
macro(WRITE_BASIC_PACKAGE_VERSION_FILE)
write_basic_config_version_file(${ARGN})
endmacro()
function(CONFIGURE_PACKAGE_CONFIG_FILE _inputFile _outputFile)
set(options NO_SET_AND_CHECK_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO)
set(oneValueArgs INSTALL_DESTINATION )
set(multiValueArgs PATH_VARS )
cmake_parse_arguments(CCF "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
if(CCF_UNPARSED_ARGUMENTS)
message(FATAL_ERROR "Unknown keywords given to CONFIGURE_PACKAGE_CONFIG_FILE(): \"${CCF_UNPARSED_ARGUMENTS}\"")
endif()
if(NOT CCF_INSTALL_DESTINATION)
message(FATAL_ERROR "No INSTALL_DESTINATION given to CONFIGURE_PACKAGE_CONFIG_FILE()")
endif()
if(IS_ABSOLUTE "${CCF_INSTALL_DESTINATION}")
set(absInstallDir "${CCF_INSTALL_DESTINATION}")
else()
set(absInstallDir "${CMAKE_INSTALL_PREFIX}/${CCF_INSTALL_DESTINATION}")
endif()
file(RELATIVE_PATH PACKAGE_RELATIVE_PATH "${absInstallDir}" "${CMAKE_INSTALL_PREFIX}" )
foreach(var ${CCF_PATH_VARS})
if(NOT DEFINED ${var})
message(FATAL_ERROR "Variable ${var} does not exist")
else()
if(IS_ABSOLUTE "${${var}}")
string(REPLACE "${CMAKE_INSTALL_PREFIX}" "\${PACKAGE_PREFIX_DIR}"
PACKAGE_${var} "${${var}}")
else()
set(PACKAGE_${var} "\${PACKAGE_PREFIX_DIR}/${${var}}")
endif()
endif()
endforeach()
set(PACKAGE_INIT "
####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() #######
get_filename_component(PACKAGE_PREFIX_DIR \"\${CMAKE_CURRENT_LIST_DIR}/${PACKAGE_RELATIVE_PATH}\" ABSOLUTE)
")
if(NOT CCF_NO_SET_AND_CHECK_MACRO)
set(PACKAGE_INIT "${PACKAGE_INIT}
macro(set_and_check _var _file)
set(\${_var} \"\${_file}\")
if(NOT EXISTS \"\${_file}\")
message(FATAL_ERROR \"File or directory \${_file} referenced by variable \${_var} does not exist !\")
endif()
endmacro()
")
endif()
if(NOT CCF_NO_CHECK_REQUIRED_COMPONENTS_MACRO)
set(PACKAGE_INIT "${PACKAGE_INIT}
macro(check_required_components _NAME)
foreach(comp \${\${_NAME}_FIND_COMPONENTS})
if(NOT \${_NAME}_\${comp}_FOUND)
if(\${_NAME}_FIND_REQUIRED_\${comp})
set(\${_NAME}_FOUND FALSE)
endif()
endif()
endforeach(comp)
endmacro()
")
endif()
set(PACKAGE_INIT "${PACKAGE_INIT}
####################################################################################")
configure_file("${_inputFile}" "${_outputFile}" @ONLY)
endfunction()

View File

@ -1,188 +0,0 @@
# - Define GNU standard installation directories
# Provides install directory variables as defined for GNU software:
# http://www.gnu.org/prep/standards/html_node/Directory-Variables.html
# Inclusion of this module defines the following variables:
# CMAKE_INSTALL_<dir> - destination for files of a given type
# CMAKE_INSTALL_FULL_<dir> - corresponding absolute path
# where <dir> is one of:
# BINDIR - user executables (bin)
# SBINDIR - system admin executables (sbin)
# LIBEXECDIR - program executables (libexec)
# SYSCONFDIR - read-only single-machine data (etc)
# SHAREDSTATEDIR - modifiable architecture-independent data (com)
# LOCALSTATEDIR - modifiable single-machine data (var)
# LIBDIR - object code libraries (lib or lib64 or lib/<multiarch-tuple> on Debian)
# INCLUDEDIR - C header files (include)
# OLDINCLUDEDIR - C header files for non-gcc (/usr/include)
# DATAROOTDIR - read-only architecture-independent data root (share)
# DATADIR - read-only architecture-independent data (DATAROOTDIR)
# INFODIR - info documentation (DATAROOTDIR/info)
# LOCALEDIR - locale-dependent data (DATAROOTDIR/locale)
# MANDIR - man documentation (DATAROOTDIR/man)
# DOCDIR - documentation root (DATAROOTDIR/doc/PROJECT_NAME)
# Each CMAKE_INSTALL_<dir> value may be passed to the DESTINATION options of
# install() commands for the corresponding file type. If the includer does
# not define a value the above-shown default will be used and the value will
# appear in the cache for editing by the user.
# Each CMAKE_INSTALL_FULL_<dir> value contains an absolute path constructed
# from the corresponding destination by prepending (if necessary) the value
# of CMAKE_INSTALL_PREFIX.
#=============================================================================
# Copyright 2011 Nikita Krupen'ko <krnekit@gmail.com>
# Copyright 2011 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
# Installation directories
#
if(NOT DEFINED CMAKE_INSTALL_BINDIR)
set(CMAKE_INSTALL_BINDIR "bin" CACHE PATH "user executables (bin)")
endif()
if(NOT DEFINED CMAKE_INSTALL_SBINDIR)
set(CMAKE_INSTALL_SBINDIR "sbin" CACHE PATH "system admin executables (sbin)")
endif()
if(NOT DEFINED CMAKE_INSTALL_LIBEXECDIR)
set(CMAKE_INSTALL_LIBEXECDIR "libexec" CACHE PATH "program executables (libexec)")
endif()
if(NOT DEFINED CMAKE_INSTALL_SYSCONFDIR)
set(CMAKE_INSTALL_SYSCONFDIR "etc" CACHE PATH "read-only single-machine data (etc)")
endif()
if(NOT DEFINED CMAKE_INSTALL_SHAREDSTATEDIR)
set(CMAKE_INSTALL_SHAREDSTATEDIR "com" CACHE PATH "modifiable architecture-independent data (com)")
endif()
if(NOT DEFINED CMAKE_INSTALL_LOCALSTATEDIR)
set(CMAKE_INSTALL_LOCALSTATEDIR "var" CACHE PATH "modifiable single-machine data (var)")
endif()
if(NOT DEFINED CMAKE_INSTALL_LIBDIR)
set(_LIBDIR_DEFAULT "lib")
# Override this default 'lib' with 'lib64' iff:
# - we are on Linux system but NOT cross-compiling
# - we are NOT on debian
# - we are on a 64 bits system
# reason is: amd64 ABI: http://www.x86-64.org/documentation/abi.pdf
# For Debian with multiarch, use 'lib/${CMAKE_LIBRARY_ARCHITECTURE}' if
# CMAKE_LIBRARY_ARCHITECTURE is set (which contains e.g. "i386-linux-gnu"
# See http://wiki.debian.org/Multiarch
if((CMAKE_SYSTEM_NAME MATCHES "Linux|kFreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "GNU")
AND NOT CMAKE_CROSSCOMPILING)
if (EXISTS "/etc/debian_version") # is this a debian system ?
if(CMAKE_LIBRARY_ARCHITECTURE)
set(_LIBDIR_DEFAULT "lib/${CMAKE_LIBRARY_ARCHITECTURE}")
endif()
else() # not debian, rely on CMAKE_SIZEOF_VOID_P:
if(NOT DEFINED CMAKE_SIZEOF_VOID_P)
message(AUTHOR_WARNING
"Unable to determine default CMAKE_INSTALL_LIBDIR directory because no target architecture is known. "
"Please enable at least one language before including GNUInstallDirs.")
else()
if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
set(_LIBDIR_DEFAULT "lib64")
endif()
endif()
endif()
endif()
set(CMAKE_INSTALL_LIBDIR "${_LIBDIR_DEFAULT}" CACHE PATH "object code libraries (${_LIBDIR_DEFAULT})")
endif()
if(NOT DEFINED CMAKE_INSTALL_INCLUDEDIR)
set(CMAKE_INSTALL_INCLUDEDIR "include" CACHE PATH "C header files (include)")
endif()
if(NOT DEFINED CMAKE_INSTALL_OLDINCLUDEDIR)
set(CMAKE_INSTALL_OLDINCLUDEDIR "/usr/include" CACHE PATH "C header files for non-gcc (/usr/include)")
endif()
if(NOT DEFINED CMAKE_INSTALL_DATAROOTDIR)
set(CMAKE_INSTALL_DATAROOTDIR "share" CACHE PATH "read-only architecture-independent data root (share)")
endif()
#-----------------------------------------------------------------------------
# Values whose defaults are relative to DATAROOTDIR. Store empty values in
# the cache and store the defaults in local variables if the cache values are
# not set explicitly. This auto-updates the defaults as DATAROOTDIR changes.
if(NOT CMAKE_INSTALL_DATADIR)
set(CMAKE_INSTALL_DATADIR "" CACHE PATH "read-only architecture-independent data (DATAROOTDIR)")
set(CMAKE_INSTALL_DATADIR "${CMAKE_INSTALL_DATAROOTDIR}")
endif()
if(NOT CMAKE_INSTALL_INFODIR)
set(CMAKE_INSTALL_INFODIR "" CACHE PATH "info documentation (DATAROOTDIR/info)")
set(CMAKE_INSTALL_INFODIR "${CMAKE_INSTALL_DATAROOTDIR}/info")
endif()
if(NOT CMAKE_INSTALL_LOCALEDIR)
set(CMAKE_INSTALL_LOCALEDIR "" CACHE PATH "locale-dependent data (DATAROOTDIR/locale)")
set(CMAKE_INSTALL_LOCALEDIR "${CMAKE_INSTALL_DATAROOTDIR}/locale")
endif()
if(NOT CMAKE_INSTALL_MANDIR)
set(CMAKE_INSTALL_MANDIR "" CACHE PATH "man documentation (DATAROOTDIR/man)")
set(CMAKE_INSTALL_MANDIR "${CMAKE_INSTALL_DATAROOTDIR}/man")
endif()
if(NOT CMAKE_INSTALL_DOCDIR)
set(CMAKE_INSTALL_DOCDIR "" CACHE PATH "documentation root (DATAROOTDIR/doc/PROJECT_NAME)")
set(CMAKE_INSTALL_DOCDIR "${CMAKE_INSTALL_DATAROOTDIR}/doc/${PROJECT_NAME}")
endif()
#-----------------------------------------------------------------------------
mark_as_advanced(
CMAKE_INSTALL_BINDIR
CMAKE_INSTALL_SBINDIR
CMAKE_INSTALL_LIBEXECDIR
CMAKE_INSTALL_SYSCONFDIR
CMAKE_INSTALL_SHAREDSTATEDIR
CMAKE_INSTALL_LOCALSTATEDIR
CMAKE_INSTALL_LIBDIR
CMAKE_INSTALL_INCLUDEDIR
CMAKE_INSTALL_OLDINCLUDEDIR
CMAKE_INSTALL_DATAROOTDIR
CMAKE_INSTALL_DATADIR
CMAKE_INSTALL_INFODIR
CMAKE_INSTALL_LOCALEDIR
CMAKE_INSTALL_MANDIR
CMAKE_INSTALL_DOCDIR
)
# Result directories
#
foreach(dir
BINDIR
SBINDIR
LIBEXECDIR
SYSCONFDIR
SHAREDSTATEDIR
LOCALSTATEDIR
LIBDIR
INCLUDEDIR
OLDINCLUDEDIR
DATAROOTDIR
DATADIR
INFODIR
LOCALEDIR
MANDIR
DOCDIR
)
if(NOT IS_ABSOLUTE ${CMAKE_INSTALL_${dir}})
set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_${dir}}")
else()
set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_${dir}}")
endif()
endforeach()

View File

@ -1,6 +0,0 @@
set(GLI_VERSION "@GLI_VERSION@")
set(GLI_INCLUDE_DIRS "@CMAKE_CURRENT_SOURCE_DIR@")
if (NOT CMAKE_VERSION VERSION_LESS "3.0")
include("${CMAKE_CURRENT_LIST_DIR}/gliTargets.cmake")
endif()

View File

@ -1,9 +0,0 @@
set(GLI_VERSION "@GLI_VERSION@")
@PACKAGE_INIT@
set_and_check(GLI_INCLUDE_DIRS "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@")
if (NOT CMAKE_VERSION VERSION_LESS "3.0")
include("${CMAKE_CURRENT_LIST_DIR}/gliTargets.cmake")
endif()

View File

@ -1,128 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: dx Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="a00074.html">gli</a></li><li class="navelem"><a class="el" href="a00001.html">dx</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="a00079.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">dx Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Translation class to convert GLI enums into DirectX enums.
<a href="a00001.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a106d0ef4c65251c1c522e965af75678d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a106d0ef4c65251c1c522e965af75678d"></a>
<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">gli::format</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00001.html#a106d0ef4c65251c1c522e965af75678d">find</a> (d3dfmt FourCC) const </td></tr>
<tr class="memdesc:a106d0ef4c65251c1c522e965af75678d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a Direct3D 9 format into a GLI format. <br /></td></tr>
<tr class="separator:a106d0ef4c65251c1c522e965af75678d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c405f2ac45a1cb46414c45bea0c4943"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c405f2ac45a1cb46414c45bea0c4943"></a>
<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">gli::format</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00001.html#a4c405f2ac45a1cb46414c45bea0c4943">find</a> (d3dfmt FourCC, dxgiFormat Format) const </td></tr>
<tr class="memdesc:a4c405f2ac45a1cb46414c45bea0c4943"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a Direct3D 10 format into a GLI format. <br /></td></tr>
<tr class="separator:a4c405f2ac45a1cb46414c45bea0c4943"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5a07c3371b0ea14fac8b0746e05c414"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac5a07c3371b0ea14fac8b0746e05c414"></a>
<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a> const &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00001.html#ac5a07c3371b0ea14fac8b0746e05c414">translate</a> (<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">gli::format</a> Format) const </td></tr>
<tr class="memdesc:ac5a07c3371b0ea14fac8b0746e05c414"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert GLI formats into Direct3D formats. <br /></td></tr>
<tr class="separator:ac5a07c3371b0ea14fac8b0746e05c414"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Translation class to convert GLI enums into DirectX enums. </p>
<p>Definition at line <a class="el" href="a00028_source.html#l00013">13</a> of file <a class="el" href="a00028_source.html">dx.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,128 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: gl Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="a00074.html">gli</a></li><li class="navelem"><a class="el" href="a00002.html">gl</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="a00080.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">gl Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Translation class to convert GLI enums into OpenGL values.
<a href="a00002.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a9f79c9677bd9cd22648723a4d06612ee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9f79c9677bd9cd22648723a4d06612ee"></a>
<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">gli::format</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00002.html#a9f79c9677bd9cd22648723a4d06612ee">find</a> (internal_format InternalFormat, external_format ExternalFormat, type_format Type)</td></tr>
<tr class="memdesc:a9f79c9677bd9cd22648723a4d06612ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert an OpenGL format into a GLI format. <br /></td></tr>
<tr class="separator:a9f79c9677bd9cd22648723a4d06612ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab38a3e0b9878adb8a6de97c0c00f3cff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab38a3e0b9878adb8a6de97c0c00f3cff"></a>
target const &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00002.html#ab38a3e0b9878adb8a6de97c0c00f3cff">translate</a> (<a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">gli::target</a> Target) const </td></tr>
<tr class="memdesc:ab38a3e0b9878adb8a6de97c0c00f3cff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert GLI targets into OpenGL texture targets. <br /></td></tr>
<tr class="separator:ab38a3e0b9878adb8a6de97c0c00f3cff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbe59739eeb1c2247c0693ee0cb0aa50"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acbe59739eeb1c2247c0693ee0cb0aa50"></a>
<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00002.html#acbe59739eeb1c2247c0693ee0cb0aa50">translate</a> (<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">gli::format</a> Format, gli::swizzles const &amp;Swizzle) const </td></tr>
<tr class="memdesc:acbe59739eeb1c2247c0693ee0cb0aa50"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert GLI formats into OpenGL texture formats. <br /></td></tr>
<tr class="separator:acbe59739eeb1c2247c0693ee0cb0aa50"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Translation class to convert GLI enums into OpenGL values. </p>
<p>Definition at line <a class="el" href="a00035_source.html#l00013">13</a> of file <a class="el" href="a00035_source.html">gl.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,304 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: image Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="a00074.html">gli</a></li><li class="navelem"><a class="el" href="a00003.html">image</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="a00081.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">image Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Image, representation for a single texture level.
<a href="a00003.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ac8bb3912a3ce86b15842e79d0b421204"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8bb3912a3ce86b15842e79d0b421204"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00003.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a> ()</td></tr>
<tr class="memdesc:ac8bb3912a3ce86b15842e79d0b421204"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the entire image storage_linear with zeros. <br /></td></tr>
<tr class="separator:ac8bb3912a3ce86b15842e79d0b421204"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5bb9c1e1b03193fb5c6fabe39301110"><td class="memTemplParams" colspan="2">template&lt;typename genType &gt; </td></tr>
<tr class="memitem:ad5bb9c1e1b03193fb5c6fabe39301110"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00003.html#ad5bb9c1e1b03193fb5c6fabe39301110">clear</a> (genType const &amp;Texel)</td></tr>
<tr class="memdesc:ad5bb9c1e1b03193fb5c6fabe39301110"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the entire image storage_linear with Texel which type must match the image storage_linear format block size If the type of genType doesn't match the type of the image format, no conversion is performed and the data will be reinterpreted as if is was of the image format. <a href="#ad5bb9c1e1b03193fb5c6fabe39301110">More...</a><br /></td></tr>
<tr class="separator:ad5bb9c1e1b03193fb5c6fabe39301110"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f2c67dc864c6b6e705710853b5568ef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f2c67dc864c6b6e705710853b5568ef"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00003.html#a3f2c67dc864c6b6e705710853b5568ef">data</a> ()</td></tr>
<tr class="memdesc:a3f2c67dc864c6b6e705710853b5568ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the image instance data. <br /></td></tr>
<tr class="separator:a3f2c67dc864c6b6e705710853b5568ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec236abf7eac8ff4eec54eda033b9288"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec236abf7eac8ff4eec54eda033b9288"></a>
void const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00003.html#aec236abf7eac8ff4eec54eda033b9288">data</a> () const </td></tr>
<tr class="memdesc:aec236abf7eac8ff4eec54eda033b9288"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the image instance data. <br /></td></tr>
<tr class="separator:aec236abf7eac8ff4eec54eda033b9288"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a310f3ca6b342ecbcb22d0acc4eb3ae57"><td class="memTemplParams" colspan="2"><a class="anchor" id="a310f3ca6b342ecbcb22d0acc4eb3ae57"></a>
template&lt;typename genType &gt; </td></tr>
<tr class="memitem:a310f3ca6b342ecbcb22d0acc4eb3ae57"><td class="memTemplItemLeft" align="right" valign="top">genType *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00003.html#a310f3ca6b342ecbcb22d0acc4eb3ae57">data</a> ()</td></tr>
<tr class="memdesc:a310f3ca6b342ecbcb22d0acc4eb3ae57"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the image format block size. <br /></td></tr>
<tr class="separator:a310f3ca6b342ecbcb22d0acc4eb3ae57"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22b0feffbc4e89ad8fae247eb1424852"><td class="memTemplParams" colspan="2"><a class="anchor" id="a22b0feffbc4e89ad8fae247eb1424852"></a>
template&lt;typename genType &gt; </td></tr>
<tr class="memitem:a22b0feffbc4e89ad8fae247eb1424852"><td class="memTemplItemLeft" align="right" valign="top">genType const *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00003.html#a22b0feffbc4e89ad8fae247eb1424852">data</a> () const </td></tr>
<tr class="memdesc:a22b0feffbc4e89ad8fae247eb1424852"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the image format block size. <br /></td></tr>
<tr class="separator:a22b0feffbc4e89ad8fae247eb1424852"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6e61de369e994009e36f344f99c15ad"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac6e61de369e994009e36f344f99c15ad"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00003.html#ac6e61de369e994009e36f344f99c15ad">empty</a> () const </td></tr>
<tr class="memdesc:ac6e61de369e994009e36f344f99c15ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return whether the image instance is empty, no storage_linear or description have been assigned to the instance. <br /></td></tr>
<tr class="separator:ac6e61de369e994009e36f344f99c15ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c9de4b32898ed383505745972d6c009"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c9de4b32898ed383505745972d6c009"></a>
extent_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00003.html#a4c9de4b32898ed383505745972d6c009">extent</a> () const </td></tr>
<tr class="memdesc:a4c9de4b32898ed383505745972d6c009"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the dimensions of an image instance: width, height and depth. <br /></td></tr>
<tr class="separator:a4c9de4b32898ed383505745972d6c009"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad94928ca00873970455c1fb2d3c03fd8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad94928ca00873970455c1fb2d3c03fd8"></a>
<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00003.html#ad94928ca00873970455c1fb2d3c03fd8">format</a> () const </td></tr>
<tr class="memdesc:ad94928ca00873970455c1fb2d3c03fd8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the image instance format. <br /></td></tr>
<tr class="separator:ad94928ca00873970455c1fb2d3c03fd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4f40c94d3427e415d291c68d3e67cfa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4f40c94d3427e415d291c68d3e67cfa"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00003.html#ab4f40c94d3427e415d291c68d3e67cfa">image</a> ()</td></tr>
<tr class="memdesc:ab4f40c94d3427e415d291c68d3e67cfa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an empty image instance. <br /></td></tr>
<tr class="separator:ab4f40c94d3427e415d291c68d3e67cfa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a828b5030180522b6c967674f12085a91"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a828b5030180522b6c967674f12085a91"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00003.html#a828b5030180522b6c967674f12085a91">image</a> (<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, extent_type const &amp;Extent)</td></tr>
<tr class="memdesc:a828b5030180522b6c967674f12085a91"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an image object and allocate an image storoge for it. <br /></td></tr>
<tr class="separator:a828b5030180522b6c967674f12085a91"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab88ab938ed93fbb2e1cb9047aef29efa"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00003.html#ab88ab938ed93fbb2e1cb9047aef29efa">image</a> (<a class="el" href="a00003.html">image</a> const &amp;Image, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format)</td></tr>
<tr class="memdesc:ab88ab938ed93fbb2e1cb9047aef29efa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an image object by sharing an existing image storage_linear from another image instance. <a href="#ab88ab938ed93fbb2e1cb9047aef29efa">More...</a><br /></td></tr>
<tr class="separator:ab88ab938ed93fbb2e1cb9047aef29efa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c04da2a2b96b59710315218eae1bf8b"><td class="memTemplParams" colspan="2">template&lt;typename genType &gt; </td></tr>
<tr class="memitem:a2c04da2a2b96b59710315218eae1bf8b"><td class="memTemplItemLeft" align="right" valign="top">genType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00003.html#a2c04da2a2b96b59710315218eae1bf8b">load</a> (extent_type const &amp;TexelCoord)</td></tr>
<tr class="memdesc:a2c04da2a2b96b59710315218eae1bf8b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load the texel located at TexelCoord coordinates. <a href="#a2c04da2a2b96b59710315218eae1bf8b">More...</a><br /></td></tr>
<tr class="separator:a2c04da2a2b96b59710315218eae1bf8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a503ab01f6c0142145d3434f6924714e7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a503ab01f6c0142145d3434f6924714e7"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00003.html#a503ab01f6c0142145d3434f6924714e7">size</a> () const </td></tr>
<tr class="memdesc:a503ab01f6c0142145d3434f6924714e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the memory size of an image instance storage_linear in bytes. <br /></td></tr>
<tr class="separator:a503ab01f6c0142145d3434f6924714e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24789b8cce4dcbe8e0d3a47b68447aba"><td class="memTemplParams" colspan="2">template&lt;typename genType &gt; </td></tr>
<tr class="memitem:a24789b8cce4dcbe8e0d3a47b68447aba"><td class="memTemplItemLeft" align="right" valign="top">size_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00003.html#a24789b8cce4dcbe8e0d3a47b68447aba">size</a> () const </td></tr>
<tr class="memdesc:a24789b8cce4dcbe8e0d3a47b68447aba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the number of blocks contained in an image instance storage_linear. <a href="#a24789b8cce4dcbe8e0d3a47b68447aba">More...</a><br /></td></tr>
<tr class="separator:a24789b8cce4dcbe8e0d3a47b68447aba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d2a0cda41c9697b915f4c176ad77ef3"><td class="memTemplParams" colspan="2">template&lt;typename genType &gt; </td></tr>
<tr class="memitem:a0d2a0cda41c9697b915f4c176ad77ef3"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00003.html#a0d2a0cda41c9697b915f4c176ad77ef3">store</a> (extent_type const &amp;TexelCoord, genType const &amp;Data)</td></tr>
<tr class="memdesc:a0d2a0cda41c9697b915f4c176ad77ef3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Store the texel located at TexelCoord coordinates. <a href="#a0d2a0cda41c9697b915f4c176ad77ef3">More...</a><br /></td></tr>
<tr class="separator:a0d2a0cda41c9697b915f4c176ad77ef3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Image, representation for a single texture level. </p>
<p>Definition at line <a class="el" href="a00037_source.html#l00011">11</a> of file <a class="el" href="a00037_source.html">image.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ab88ab938ed93fbb2e1cb9047aef29efa"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00003.html">image</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00003.html">image</a> const &amp;&#160;</td>
<td class="paramname"><em>Image</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a>&#160;</td>
<td class="paramname"><em>Format</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Create an image object by sharing an existing image storage_linear from another image instance. </p>
<p>This image object is effectively an image view where format can be reinterpreted with a different compatible image format. For formats to be compatible, the block size of source and destination must match. </p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="ad5bb9c1e1b03193fb5c6fabe39301110"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void clear </td>
<td>(</td>
<td class="paramtype">genType const &amp;&#160;</td>
<td class="paramname"><em>Texel</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Clear the entire image storage_linear with Texel which type must match the image storage_linear format block size If the type of genType doesn't match the type of the image format, no conversion is performed and the data will be reinterpreted as if is was of the image format. </p>
</div>
</div>
<a class="anchor" id="a2c04da2a2b96b59710315218eae1bf8b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">genType load </td>
<td>(</td>
<td class="paramtype">extent_type const &amp;&#160;</td>
<td class="paramname"><em>TexelCoord</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Load the texel located at TexelCoord coordinates. </p>
<p>It's an error to call this function if the format is compressed. It's an error if TexelCoord values aren't between [0, dimensions]. </p>
</div>
</div>
<a class="anchor" id="a24789b8cce4dcbe8e0d3a47b68447aba"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">size_type size </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the number of blocks contained in an image instance storage_linear. </p>
<p>genType size must match the block size conresponding to the image format. </p>
</div>
</div>
<a class="anchor" id="a0d2a0cda41c9697b915f4c176ad77ef3"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void store </td>
<td>(</td>
<td class="paramtype">extent_type const &amp;&#160;</td>
<td class="paramname"><em>TexelCoord</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">genType const &amp;&#160;</td>
<td class="paramname"><em>Data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Store the texel located at TexelCoord coordinates. </p>
<p>It's an error to call this function if the format is compressed. It's an error if TexelCoord values aren't between [0, dimensions]. </p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,126 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: sampler Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="a00074.html">gli</a></li><li class="navelem"><a class="el" href="a00004.html">sampler</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="a00082.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">sampler Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Genetic sampler class.
<a href="a00004.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for sampler:</div>
<div class="dyncontent">
<div class="center">
<img src="a00004.png" usemap="#sampler_map" alt=""/>
<map id="sampler_map" name="sampler_map">
<area href="a00005.html" title="1d texture sampler " alt="sampler1d&lt; T, P &gt;" shape="rect" coords="0,56,177,80"/>
<area href="a00006.html" title="1d array texture sampler " alt="sampler1d_array&lt; T, P &gt;" shape="rect" coords="187,56,364,80"/>
<area href="a00007.html" title="2d texture sampler " alt="sampler2d&lt; T, P &gt;" shape="rect" coords="374,56,551,80"/>
<area href="a00008.html" title="2d array texture sampler " alt="sampler2d_array&lt; T, P &gt;" shape="rect" coords="561,56,738,80"/>
<area href="a00009.html" title="3d texture sampler " alt="sampler3d&lt; T, P &gt;" shape="rect" coords="748,56,925,80"/>
<area href="a00010.html" title="Cube map texture sampler. " alt="sampler_cube&lt; T, P &gt;" shape="rect" coords="935,56,1112,80"/>
<area href="a00011.html" title="Cube map array texture sampler. " alt="sampler_cube_array&lt; T, P &gt;" shape="rect" coords="1122,56,1299,80"/>
</map>
</div></div>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Genetic sampler class. </p>
<p>Definition at line <a class="el" href="a00047_source.html#l00033">33</a> of file <a class="el" href="a00047_source.html">sampler.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -1,163 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: sampler1d&lt; T, P &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="a00074.html">gli</a></li><li class="navelem"><a class="el" href="a00005.html">sampler1d</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="a00083.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">sampler1d&lt; T, P &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>1d texture sampler
<a href="a00005.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for sampler1d&lt; T, P &gt;:</div>
<div class="dyncontent">
<div class="center">
<img src="a00005.png" usemap="#sampler1d&lt; T, P &gt;_map" alt=""/>
<map id="sampler1d&lt; T, P &gt;_map" name="sampler1d&lt; T, P &gt;_map">
<area href="a00004.html" title="Genetic sampler class. " alt="sampler" shape="rect" coords="0,0,118,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:abad905c32fb058626def900ff40695a3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abad905c32fb058626def900ff40695a3"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00005.html#abad905c32fb058626def900ff40695a3">clear</a> (texel_type const &amp;Texel)</td></tr>
<tr class="memdesc:abad905c32fb058626def900ff40695a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the sampler texture with a uniform texel. <br /></td></tr>
<tr class="separator:abad905c32fb058626def900ff40695a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b4699a70473cc6e74524f7cf9919c83"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6b4699a70473cc6e74524f7cf9919c83"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00005.html#a6b4699a70473cc6e74524f7cf9919c83">generate_mipmaps</a> (<a class="el" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">filter</a> Minification)</td></tr>
<tr class="memdesc:a6b4699a70473cc6e74524f7cf9919c83"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate all the mipmaps of the sampler texture from the texture base level. <br /></td></tr>
<tr class="separator:a6b4699a70473cc6e74524f7cf9919c83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad39ef81781788d02bfa8b73692402ecf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad39ef81781788d02bfa8b73692402ecf"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00005.html#ad39ef81781788d02bfa8b73692402ecf">generate_mipmaps</a> (size_type BaseLevel, size_type MaxLevel, <a class="el" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">filter</a> Minification)</td></tr>
<tr class="memdesc:ad39ef81781788d02bfa8b73692402ecf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate the mipmaps of the sampler texture from the texture base level to the texture max level included. <br /></td></tr>
<tr class="separator:ad39ef81781788d02bfa8b73692402ecf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b3f71f5e36f1319450875779976ad9f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b3f71f5e36f1319450875779976ad9f"></a>
<a class="el" href="a00013.html">texture_type</a> const &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00005.html#a4b3f71f5e36f1319450875779976ad9f">operator()</a> () const </td></tr>
<tr class="memdesc:a4b3f71f5e36f1319450875779976ad9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access the sampler texture object. <br /></td></tr>
<tr class="separator:a4b3f71f5e36f1319450875779976ad9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeec05a81e342814d97816a294e5646c5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeec05a81e342814d97816a294e5646c5"></a>
texel_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00005.html#aeec05a81e342814d97816a294e5646c5">texel_fetch</a> (extent_type const &amp;TexelCoord, size_type const &amp;Level) const </td></tr>
<tr class="memdesc:aeec05a81e342814d97816a294e5646c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch a texel from the sampler texture. <br /></td></tr>
<tr class="separator:aeec05a81e342814d97816a294e5646c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30c7b58736bd2a8fdddffe6afa9fea92"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a30c7b58736bd2a8fdddffe6afa9fea92"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00005.html#a30c7b58736bd2a8fdddffe6afa9fea92">texel_write</a> (extent_type const &amp;TexelCoord, size_type const &amp;Level, texel_type const &amp;Texel)</td></tr>
<tr class="memdesc:a30c7b58736bd2a8fdddffe6afa9fea92"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a texel in the sampler texture. <br /></td></tr>
<tr class="separator:a30c7b58736bd2a8fdddffe6afa9fea92"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f2d9c019cd68fba219e7579af7469c4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8f2d9c019cd68fba219e7579af7469c4"></a>
texel_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00005.html#a8f2d9c019cd68fba219e7579af7469c4">texture_lod</a> (normalized_type const &amp;SampleCoord, level_type Level) const </td></tr>
<tr class="memdesc:a8f2d9c019cd68fba219e7579af7469c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sample the sampler texture at a specific level. <br /></td></tr>
<tr class="separator:a8f2d9c019cd68fba219e7579af7469c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename T, precision P = defaultp&gt;<br />
class gli::sampler1d&lt; T, P &gt;</h3>
<p>1d texture sampler </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">T</td><td>Sampler can fetch, write and interpret any texture format but will expose and process the data through type T conversions. </td></tr>
<tr><td class="paramname">P</td><td>Precision in term of ULPs </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="a00048_source.html#l00017">17</a> of file <a class="el" href="a00048_source.html">sampler1d.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 498 B

View File

@ -1,163 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: sampler1d_array&lt; T, P &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="a00074.html">gli</a></li><li class="navelem"><a class="el" href="a00006.html">sampler1d_array</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="a00084.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">sampler1d_array&lt; T, P &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>1d array texture sampler
<a href="a00006.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for sampler1d_array&lt; T, P &gt;:</div>
<div class="dyncontent">
<div class="center">
<img src="a00006.png" usemap="#sampler1d_array&lt; T, P &gt;_map" alt=""/>
<map id="sampler1d_array&lt; T, P &gt;_map" name="sampler1d_array&lt; T, P &gt;_map">
<area href="a00004.html" title="Genetic sampler class. " alt="sampler" shape="rect" coords="0,0,156,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:abad905c32fb058626def900ff40695a3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abad905c32fb058626def900ff40695a3"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00006.html#abad905c32fb058626def900ff40695a3">clear</a> (texel_type const &amp;Texel)</td></tr>
<tr class="memdesc:abad905c32fb058626def900ff40695a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the sampler texture with a uniform texel. <br /></td></tr>
<tr class="separator:abad905c32fb058626def900ff40695a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b4699a70473cc6e74524f7cf9919c83"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6b4699a70473cc6e74524f7cf9919c83"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00006.html#a6b4699a70473cc6e74524f7cf9919c83">generate_mipmaps</a> (<a class="el" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">filter</a> Minification)</td></tr>
<tr class="memdesc:a6b4699a70473cc6e74524f7cf9919c83"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate all the mipmaps of the sampler texture from the texture base level. <br /></td></tr>
<tr class="separator:a6b4699a70473cc6e74524f7cf9919c83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58597eecdc5f6962ae99da719303d289"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a58597eecdc5f6962ae99da719303d289"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00006.html#a58597eecdc5f6962ae99da719303d289">generate_mipmaps</a> (size_type BaseLayer, size_type MaxLayer, size_type BaseLevel, size_type MaxLevel, <a class="el" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">filter</a> Minification)</td></tr>
<tr class="memdesc:a58597eecdc5f6962ae99da719303d289"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate the mipmaps of the sampler texture from the texture base level to the texture max level included. <br /></td></tr>
<tr class="separator:a58597eecdc5f6962ae99da719303d289"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b3f71f5e36f1319450875779976ad9f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b3f71f5e36f1319450875779976ad9f"></a>
<a class="el" href="a00014.html">texture_type</a> const &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00006.html#a4b3f71f5e36f1319450875779976ad9f">operator()</a> () const </td></tr>
<tr class="memdesc:a4b3f71f5e36f1319450875779976ad9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access the sampler texture object. <br /></td></tr>
<tr class="separator:a4b3f71f5e36f1319450875779976ad9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a0761f53665a561f7c28a28a7078352"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6a0761f53665a561f7c28a28a7078352"></a>
texel_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00006.html#a6a0761f53665a561f7c28a28a7078352">texel_fetch</a> (extent_type const &amp;TexelCoord, size_type layer, size_type Level) const </td></tr>
<tr class="memdesc:a6a0761f53665a561f7c28a28a7078352"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch a texel from the sampler texture. <br /></td></tr>
<tr class="separator:a6a0761f53665a561f7c28a28a7078352"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17df03e3b2bdfd95a830a0eeff90a64c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a17df03e3b2bdfd95a830a0eeff90a64c"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00006.html#a17df03e3b2bdfd95a830a0eeff90a64c">texel_write</a> (extent_type const &amp;TexelCoord, size_type layer, size_type Level, texel_type const &amp;Texel)</td></tr>
<tr class="memdesc:a17df03e3b2bdfd95a830a0eeff90a64c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a texel in the sampler texture. <br /></td></tr>
<tr class="separator:a17df03e3b2bdfd95a830a0eeff90a64c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2045773bebfc6a573e499613316c4f07"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2045773bebfc6a573e499613316c4f07"></a>
texel_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00006.html#a2045773bebfc6a573e499613316c4f07">texture_lod</a> (normalized_type const &amp;SampleCoord, size_type layer, level_type Level) const </td></tr>
<tr class="memdesc:a2045773bebfc6a573e499613316c4f07"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sample the sampler texture at a specific level. <br /></td></tr>
<tr class="separator:a2045773bebfc6a573e499613316c4f07"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename T, precision P = defaultp&gt;<br />
class gli::sampler1d_array&lt; T, P &gt;</h3>
<p>1d array texture sampler </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">T</td><td>Sampler can fetch, write and interpret any texture format but will expose and process the data through type T conversions. </td></tr>
<tr><td class="paramname">P</td><td>Precision in term of ULPs </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="a00049_source.html#l00017">17</a> of file <a class="el" href="a00049_source.html">sampler1d_array.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 589 B

View File

@ -1,163 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: sampler2d&lt; T, P &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="a00074.html">gli</a></li><li class="navelem"><a class="el" href="a00007.html">sampler2d</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="a00085.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">sampler2d&lt; T, P &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>2d texture sampler
<a href="a00007.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for sampler2d&lt; T, P &gt;:</div>
<div class="dyncontent">
<div class="center">
<img src="a00007.png" usemap="#sampler2d&lt; T, P &gt;_map" alt=""/>
<map id="sampler2d&lt; T, P &gt;_map" name="sampler2d&lt; T, P &gt;_map">
<area href="a00004.html" title="Genetic sampler class. " alt="sampler" shape="rect" coords="0,0,118,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:abad905c32fb058626def900ff40695a3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abad905c32fb058626def900ff40695a3"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00007.html#abad905c32fb058626def900ff40695a3">clear</a> (texel_type const &amp;Texel)</td></tr>
<tr class="memdesc:abad905c32fb058626def900ff40695a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the sampler texture with a uniform texel. <br /></td></tr>
<tr class="separator:abad905c32fb058626def900ff40695a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b4699a70473cc6e74524f7cf9919c83"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6b4699a70473cc6e74524f7cf9919c83"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00007.html#a6b4699a70473cc6e74524f7cf9919c83">generate_mipmaps</a> (<a class="el" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">filter</a> Minification)</td></tr>
<tr class="memdesc:a6b4699a70473cc6e74524f7cf9919c83"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate all the mipmaps of the sampler texture from the texture base level. <br /></td></tr>
<tr class="separator:a6b4699a70473cc6e74524f7cf9919c83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad39ef81781788d02bfa8b73692402ecf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad39ef81781788d02bfa8b73692402ecf"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00007.html#ad39ef81781788d02bfa8b73692402ecf">generate_mipmaps</a> (size_type BaseLevel, size_type MaxLevel, <a class="el" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">filter</a> Minification)</td></tr>
<tr class="memdesc:ad39ef81781788d02bfa8b73692402ecf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate the mipmaps of the sampler texture from the texture base level to the texture max level included. <br /></td></tr>
<tr class="separator:ad39ef81781788d02bfa8b73692402ecf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b3f71f5e36f1319450875779976ad9f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b3f71f5e36f1319450875779976ad9f"></a>
<a class="el" href="a00015.html">texture_type</a> const &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00007.html#a4b3f71f5e36f1319450875779976ad9f">operator()</a> () const </td></tr>
<tr class="memdesc:a4b3f71f5e36f1319450875779976ad9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access the sampler texture object. <br /></td></tr>
<tr class="separator:a4b3f71f5e36f1319450875779976ad9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeec05a81e342814d97816a294e5646c5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeec05a81e342814d97816a294e5646c5"></a>
texel_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00007.html#aeec05a81e342814d97816a294e5646c5">texel_fetch</a> (extent_type const &amp;TexelCoord, size_type const &amp;Level) const </td></tr>
<tr class="memdesc:aeec05a81e342814d97816a294e5646c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch a texel from the sampler texture. <br /></td></tr>
<tr class="separator:aeec05a81e342814d97816a294e5646c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30c7b58736bd2a8fdddffe6afa9fea92"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a30c7b58736bd2a8fdddffe6afa9fea92"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00007.html#a30c7b58736bd2a8fdddffe6afa9fea92">texel_write</a> (extent_type const &amp;TexelCoord, size_type const &amp;Level, texel_type const &amp;Texel)</td></tr>
<tr class="memdesc:a30c7b58736bd2a8fdddffe6afa9fea92"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a texel in the sampler texture. <br /></td></tr>
<tr class="separator:a30c7b58736bd2a8fdddffe6afa9fea92"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f2d9c019cd68fba219e7579af7469c4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8f2d9c019cd68fba219e7579af7469c4"></a>
texel_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00007.html#a8f2d9c019cd68fba219e7579af7469c4">texture_lod</a> (normalized_type const &amp;SampleCoord, level_type Level) const </td></tr>
<tr class="memdesc:a8f2d9c019cd68fba219e7579af7469c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sample the sampler texture at a specific level. <br /></td></tr>
<tr class="separator:a8f2d9c019cd68fba219e7579af7469c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename T, precision P = defaultp&gt;<br />
class gli::sampler2d&lt; T, P &gt;</h3>
<p>2d texture sampler </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">T</td><td>Sampler can fetch, write and interpret any texture format but will expose and process the data through type T conversions. </td></tr>
<tr><td class="paramname">P</td><td>Precision in term of ULPs </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="a00050_source.html#l00017">17</a> of file <a class="el" href="a00050_source.html">sampler2d.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 499 B

View File

@ -1,163 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: sampler2d_array&lt; T, P &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="a00074.html">gli</a></li><li class="navelem"><a class="el" href="a00008.html">sampler2d_array</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="a00086.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">sampler2d_array&lt; T, P &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>2d array texture sampler
<a href="a00008.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for sampler2d_array&lt; T, P &gt;:</div>
<div class="dyncontent">
<div class="center">
<img src="a00008.png" usemap="#sampler2d_array&lt; T, P &gt;_map" alt=""/>
<map id="sampler2d_array&lt; T, P &gt;_map" name="sampler2d_array&lt; T, P &gt;_map">
<area href="a00004.html" title="Genetic sampler class. " alt="sampler" shape="rect" coords="0,0,156,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:abad905c32fb058626def900ff40695a3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abad905c32fb058626def900ff40695a3"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00008.html#abad905c32fb058626def900ff40695a3">clear</a> (texel_type const &amp;Texel)</td></tr>
<tr class="memdesc:abad905c32fb058626def900ff40695a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the sampler texture with a uniform texel. <br /></td></tr>
<tr class="separator:abad905c32fb058626def900ff40695a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b4699a70473cc6e74524f7cf9919c83"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6b4699a70473cc6e74524f7cf9919c83"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00008.html#a6b4699a70473cc6e74524f7cf9919c83">generate_mipmaps</a> (<a class="el" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">filter</a> Minification)</td></tr>
<tr class="memdesc:a6b4699a70473cc6e74524f7cf9919c83"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate all the mipmaps of the sampler texture from the texture base level. <br /></td></tr>
<tr class="separator:a6b4699a70473cc6e74524f7cf9919c83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58597eecdc5f6962ae99da719303d289"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a58597eecdc5f6962ae99da719303d289"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00008.html#a58597eecdc5f6962ae99da719303d289">generate_mipmaps</a> (size_type BaseLayer, size_type MaxLayer, size_type BaseLevel, size_type MaxLevel, <a class="el" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">filter</a> Minification)</td></tr>
<tr class="memdesc:a58597eecdc5f6962ae99da719303d289"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate the mipmaps of the sampler texture from the texture base level to the texture max level included. <br /></td></tr>
<tr class="separator:a58597eecdc5f6962ae99da719303d289"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b3f71f5e36f1319450875779976ad9f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b3f71f5e36f1319450875779976ad9f"></a>
<a class="el" href="a00016.html">texture_type</a> const &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00008.html#a4b3f71f5e36f1319450875779976ad9f">operator()</a> () const </td></tr>
<tr class="memdesc:a4b3f71f5e36f1319450875779976ad9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access the sampler texture object. <br /></td></tr>
<tr class="separator:a4b3f71f5e36f1319450875779976ad9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a0761f53665a561f7c28a28a7078352"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6a0761f53665a561f7c28a28a7078352"></a>
texel_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00008.html#a6a0761f53665a561f7c28a28a7078352">texel_fetch</a> (extent_type const &amp;TexelCoord, size_type layer, size_type Level) const </td></tr>
<tr class="memdesc:a6a0761f53665a561f7c28a28a7078352"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch a texel from the sampler texture. <br /></td></tr>
<tr class="separator:a6a0761f53665a561f7c28a28a7078352"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17df03e3b2bdfd95a830a0eeff90a64c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a17df03e3b2bdfd95a830a0eeff90a64c"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00008.html#a17df03e3b2bdfd95a830a0eeff90a64c">texel_write</a> (extent_type const &amp;TexelCoord, size_type layer, size_type Level, texel_type const &amp;Texel)</td></tr>
<tr class="memdesc:a17df03e3b2bdfd95a830a0eeff90a64c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a texel in the sampler texture. <br /></td></tr>
<tr class="separator:a17df03e3b2bdfd95a830a0eeff90a64c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2045773bebfc6a573e499613316c4f07"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2045773bebfc6a573e499613316c4f07"></a>
texel_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00008.html#a2045773bebfc6a573e499613316c4f07">texture_lod</a> (normalized_type const &amp;SampleCoord, size_type layer, level_type Level) const </td></tr>
<tr class="memdesc:a2045773bebfc6a573e499613316c4f07"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sample the sampler texture at a specific level. <br /></td></tr>
<tr class="separator:a2045773bebfc6a573e499613316c4f07"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename T, precision P = defaultp&gt;<br />
class gli::sampler2d_array&lt; T, P &gt;</h3>
<p>2d array texture sampler </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">T</td><td>Sampler can fetch, write and interpret any texture format but will expose and process the data through type T conversions. </td></tr>
<tr><td class="paramname">P</td><td>Precision in term of ULPs </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="a00051_source.html#l00017">17</a> of file <a class="el" href="a00051_source.html">sampler2d_array.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 596 B

View File

@ -1,163 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: sampler3d&lt; T, P &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="a00074.html">gli</a></li><li class="navelem"><a class="el" href="a00009.html">sampler3d</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="a00087.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">sampler3d&lt; T, P &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>3d texture sampler
<a href="a00009.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for sampler3d&lt; T, P &gt;:</div>
<div class="dyncontent">
<div class="center">
<img src="a00009.png" usemap="#sampler3d&lt; T, P &gt;_map" alt=""/>
<map id="sampler3d&lt; T, P &gt;_map" name="sampler3d&lt; T, P &gt;_map">
<area href="a00004.html" title="Genetic sampler class. " alt="sampler" shape="rect" coords="0,0,118,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:abad905c32fb058626def900ff40695a3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abad905c32fb058626def900ff40695a3"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#abad905c32fb058626def900ff40695a3">clear</a> (texel_type const &amp;Texel)</td></tr>
<tr class="memdesc:abad905c32fb058626def900ff40695a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the sampler texture with a uniform texel. <br /></td></tr>
<tr class="separator:abad905c32fb058626def900ff40695a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b4699a70473cc6e74524f7cf9919c83"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6b4699a70473cc6e74524f7cf9919c83"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#a6b4699a70473cc6e74524f7cf9919c83">generate_mipmaps</a> (<a class="el" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">filter</a> Minification)</td></tr>
<tr class="memdesc:a6b4699a70473cc6e74524f7cf9919c83"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate all the mipmaps of the sampler texture from the texture base level. <br /></td></tr>
<tr class="separator:a6b4699a70473cc6e74524f7cf9919c83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad39ef81781788d02bfa8b73692402ecf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad39ef81781788d02bfa8b73692402ecf"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#ad39ef81781788d02bfa8b73692402ecf">generate_mipmaps</a> (size_type BaseLevel, size_type MaxLevel, <a class="el" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">filter</a> Minification)</td></tr>
<tr class="memdesc:ad39ef81781788d02bfa8b73692402ecf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate the mipmaps of the sampler texture from the texture base level to the texture max level included. <br /></td></tr>
<tr class="separator:ad39ef81781788d02bfa8b73692402ecf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b3f71f5e36f1319450875779976ad9f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b3f71f5e36f1319450875779976ad9f"></a>
<a class="el" href="a00017.html">texture_type</a> const &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#a4b3f71f5e36f1319450875779976ad9f">operator()</a> () const </td></tr>
<tr class="memdesc:a4b3f71f5e36f1319450875779976ad9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access the sampler texture object. <br /></td></tr>
<tr class="separator:a4b3f71f5e36f1319450875779976ad9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeec05a81e342814d97816a294e5646c5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeec05a81e342814d97816a294e5646c5"></a>
texel_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#aeec05a81e342814d97816a294e5646c5">texel_fetch</a> (extent_type const &amp;TexelCoord, size_type const &amp;Level) const </td></tr>
<tr class="memdesc:aeec05a81e342814d97816a294e5646c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch a texel from the sampler texture. <br /></td></tr>
<tr class="separator:aeec05a81e342814d97816a294e5646c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30c7b58736bd2a8fdddffe6afa9fea92"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a30c7b58736bd2a8fdddffe6afa9fea92"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#a30c7b58736bd2a8fdddffe6afa9fea92">texel_write</a> (extent_type const &amp;TexelCoord, size_type const &amp;Level, texel_type const &amp;Texel)</td></tr>
<tr class="memdesc:a30c7b58736bd2a8fdddffe6afa9fea92"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a texel in the sampler texture. <br /></td></tr>
<tr class="separator:a30c7b58736bd2a8fdddffe6afa9fea92"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f2d9c019cd68fba219e7579af7469c4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8f2d9c019cd68fba219e7579af7469c4"></a>
texel_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#a8f2d9c019cd68fba219e7579af7469c4">texture_lod</a> (normalized_type const &amp;SampleCoord, level_type Level) const </td></tr>
<tr class="memdesc:a8f2d9c019cd68fba219e7579af7469c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sample the sampler texture at a specific level. <br /></td></tr>
<tr class="separator:a8f2d9c019cd68fba219e7579af7469c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename T, precision P = defaultp&gt;<br />
class gli::sampler3d&lt; T, P &gt;</h3>
<p>3d texture sampler </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">T</td><td>Sampler can fetch, write and interpret any texture format but will expose and process the data through type T conversions. </td></tr>
<tr><td class="paramname">P</td><td>Precision in term of ULPs </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="a00052_source.html#l00017">17</a> of file <a class="el" href="a00052_source.html">sampler3d.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 496 B

View File

@ -1,163 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: sampler_cube&lt; T, P &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="a00074.html">gli</a></li><li class="navelem"><a class="el" href="a00010.html">sampler_cube</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="a00088.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">sampler_cube&lt; T, P &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Cube map texture sampler.
<a href="a00010.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for sampler_cube&lt; T, P &gt;:</div>
<div class="dyncontent">
<div class="center">
<img src="a00010.png" usemap="#sampler_cube&lt; T, P &gt;_map" alt=""/>
<map id="sampler_cube&lt; T, P &gt;_map" name="sampler_cube&lt; T, P &gt;_map">
<area href="a00004.html" title="Genetic sampler class. " alt="sampler" shape="rect" coords="0,0,139,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:abad905c32fb058626def900ff40695a3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abad905c32fb058626def900ff40695a3"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00010.html#abad905c32fb058626def900ff40695a3">clear</a> (texel_type const &amp;Texel)</td></tr>
<tr class="memdesc:abad905c32fb058626def900ff40695a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the sampler texture with a uniform texel. <br /></td></tr>
<tr class="separator:abad905c32fb058626def900ff40695a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b4699a70473cc6e74524f7cf9919c83"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6b4699a70473cc6e74524f7cf9919c83"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00010.html#a6b4699a70473cc6e74524f7cf9919c83">generate_mipmaps</a> (<a class="el" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">filter</a> Minification)</td></tr>
<tr class="memdesc:a6b4699a70473cc6e74524f7cf9919c83"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate all the mipmaps of the sampler texture from the texture base level. <br /></td></tr>
<tr class="separator:a6b4699a70473cc6e74524f7cf9919c83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d26b662b00425583b9191412e0e6b2e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5d26b662b00425583b9191412e0e6b2e"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00010.html#a5d26b662b00425583b9191412e0e6b2e">generate_mipmaps</a> (size_type BaseFace, size_type MaxFace, size_type BaseLevel, size_type MaxLevel, <a class="el" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">filter</a> Minification)</td></tr>
<tr class="memdesc:a5d26b662b00425583b9191412e0e6b2e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate the mipmaps of the sampler texture from the texture base level to the texture max level included. <br /></td></tr>
<tr class="separator:a5d26b662b00425583b9191412e0e6b2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b3f71f5e36f1319450875779976ad9f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b3f71f5e36f1319450875779976ad9f"></a>
<a class="el" href="a00018.html">texture_type</a> const &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00010.html#a4b3f71f5e36f1319450875779976ad9f">operator()</a> () const </td></tr>
<tr class="memdesc:a4b3f71f5e36f1319450875779976ad9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access the sampler texture object. <br /></td></tr>
<tr class="separator:a4b3f71f5e36f1319450875779976ad9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c5b6ce6ebc1ed7fd08de6d750b132e1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3c5b6ce6ebc1ed7fd08de6d750b132e1"></a>
texel_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00010.html#a3c5b6ce6ebc1ed7fd08de6d750b132e1">texel_fetch</a> (extent_type const &amp;TexelCoord, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:a3c5b6ce6ebc1ed7fd08de6d750b132e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch a texel from the sampler texture. <br /></td></tr>
<tr class="separator:a3c5b6ce6ebc1ed7fd08de6d750b132e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aab861bc6f1c158693dbad974235dfb8f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aab861bc6f1c158693dbad974235dfb8f"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00010.html#aab861bc6f1c158693dbad974235dfb8f">texel_write</a> (extent_type const &amp;TexelCoord, size_type Face, size_type Level, texel_type const &amp;Texel)</td></tr>
<tr class="memdesc:aab861bc6f1c158693dbad974235dfb8f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a texel in the sampler texture. <br /></td></tr>
<tr class="separator:aab861bc6f1c158693dbad974235dfb8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a414636f8dc1b4009d7df6edd10bb9d48"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a414636f8dc1b4009d7df6edd10bb9d48"></a>
texel_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00010.html#a414636f8dc1b4009d7df6edd10bb9d48">texture_lod</a> (normalized_type const &amp;SampleCoord, size_type Face, level_type Level) const </td></tr>
<tr class="memdesc:a414636f8dc1b4009d7df6edd10bb9d48"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sample the sampler texture at a specific level. <br /></td></tr>
<tr class="separator:a414636f8dc1b4009d7df6edd10bb9d48"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename T, precision P = defaultp&gt;<br />
class gli::sampler_cube&lt; T, P &gt;</h3>
<p>Cube map texture sampler. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">T</td><td>Sampler can fetch, write and interpret any texture format but will expose and process the data through type T conversions. </td></tr>
<tr><td class="paramname">P</td><td>Precision in term of ULPs </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="a00053_source.html#l00017">17</a> of file <a class="el" href="a00053_source.html">sampler_cube.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 548 B

View File

@ -1,163 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: sampler_cube_array&lt; T, P &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="a00074.html">gli</a></li><li class="navelem"><a class="el" href="a00011.html">sampler_cube_array</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="a00089.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">sampler_cube_array&lt; T, P &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Cube map array texture sampler.
<a href="a00011.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for sampler_cube_array&lt; T, P &gt;:</div>
<div class="dyncontent">
<div class="center">
<img src="a00011.png" usemap="#sampler_cube_array&lt; T, P &gt;_map" alt=""/>
<map id="sampler_cube_array&lt; T, P &gt;_map" name="sampler_cube_array&lt; T, P &gt;_map">
<area href="a00004.html" title="Genetic sampler class. " alt="sampler" shape="rect" coords="0,0,177,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:abad905c32fb058626def900ff40695a3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abad905c32fb058626def900ff40695a3"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00011.html#abad905c32fb058626def900ff40695a3">clear</a> (texel_type const &amp;Texel)</td></tr>
<tr class="memdesc:abad905c32fb058626def900ff40695a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the sampler texture with a uniform texel. <br /></td></tr>
<tr class="separator:abad905c32fb058626def900ff40695a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b4699a70473cc6e74524f7cf9919c83"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6b4699a70473cc6e74524f7cf9919c83"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00011.html#a6b4699a70473cc6e74524f7cf9919c83">generate_mipmaps</a> (<a class="el" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">filter</a> Minification)</td></tr>
<tr class="memdesc:a6b4699a70473cc6e74524f7cf9919c83"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate all the mipmaps of the sampler texture from the texture base level. <br /></td></tr>
<tr class="separator:a6b4699a70473cc6e74524f7cf9919c83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3384e6d71c723e976bb7b6a3f5d2f848"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3384e6d71c723e976bb7b6a3f5d2f848"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00011.html#a3384e6d71c723e976bb7b6a3f5d2f848">generate_mipmaps</a> (size_type BaseLayer, size_type MaxLayer, size_type BaseFace, size_type MaxFace, size_type BaseLevel, size_type MaxLevel, <a class="el" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">filter</a> Minification)</td></tr>
<tr class="memdesc:a3384e6d71c723e976bb7b6a3f5d2f848"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate the mipmaps of the sampler texture from the texture base level to the texture max level included. <br /></td></tr>
<tr class="separator:a3384e6d71c723e976bb7b6a3f5d2f848"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b3f71f5e36f1319450875779976ad9f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b3f71f5e36f1319450875779976ad9f"></a>
<a class="el" href="a00019.html">texture_type</a> const &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00011.html#a4b3f71f5e36f1319450875779976ad9f">operator()</a> () const </td></tr>
<tr class="memdesc:a4b3f71f5e36f1319450875779976ad9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access the sampler texture object. <br /></td></tr>
<tr class="separator:a4b3f71f5e36f1319450875779976ad9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c52b645f42105b75629ef2b20891e5b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c52b645f42105b75629ef2b20891e5b"></a>
texel_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00011.html#a4c52b645f42105b75629ef2b20891e5b">texel_fetch</a> (extent_type const &amp;TexelCoord, size_type layer, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:a4c52b645f42105b75629ef2b20891e5b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch a texel from the sampler texture. <br /></td></tr>
<tr class="separator:a4c52b645f42105b75629ef2b20891e5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1cf389ce5d8247cb23921660a8d24d39"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1cf389ce5d8247cb23921660a8d24d39"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00011.html#a1cf389ce5d8247cb23921660a8d24d39">texel_write</a> (extent_type const &amp;TexelCoord, size_type layer, size_type Face, size_type Level, texel_type const &amp;Texel)</td></tr>
<tr class="memdesc:a1cf389ce5d8247cb23921660a8d24d39"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a texel in the sampler texture. <br /></td></tr>
<tr class="separator:a1cf389ce5d8247cb23921660a8d24d39"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a05d92527e03915a13acbacbb2f2127ea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a05d92527e03915a13acbacbb2f2127ea"></a>
texel_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00011.html#a05d92527e03915a13acbacbb2f2127ea">texture_lod</a> (normalized_type const &amp;SampleCoord, size_type layer, size_type Face, level_type Level) const </td></tr>
<tr class="memdesc:a05d92527e03915a13acbacbb2f2127ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sample the sampler texture at a specific level. <br /></td></tr>
<tr class="separator:a05d92527e03915a13acbacbb2f2127ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename T, precision P = defaultp&gt;<br />
class gli::sampler_cube_array&lt; T, P &gt;</h3>
<p>Cube map array texture sampler. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">T</td><td>Sampler can fetch, write and interpret any texture format but will expose and process the data through type T conversions. </td></tr>
<tr><td class="paramname">P</td><td>Precision in term of ULPs </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="a00054_source.html#l00017">17</a> of file <a class="el" href="a00054_source.html">sampler_cube_array.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 615 B

View File

@ -1,534 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: texture Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="a00074.html">gli</a></li><li class="navelem"><a class="el" href="a00012.html">texture</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="a00090.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">texture Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Genetic texture class. It can support any target.
<a href="a00012.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for texture:</div>
<div class="dyncontent">
<div class="center">
<img src="a00012.png" usemap="#texture_map" alt=""/>
<map id="texture_map" name="texture_map">
<area href="a00013.html" title="1d texture " alt="texture1d" shape="rect" coords="0,56,123,80"/>
<area href="a00014.html" title="1d array texture " alt="texture1d_array" shape="rect" coords="133,56,256,80"/>
<area href="a00015.html" title="2d texture " alt="texture2d" shape="rect" coords="266,56,389,80"/>
<area href="a00016.html" title="2d array texture " alt="texture2d_array" shape="rect" coords="399,56,522,80"/>
<area href="a00017.html" title="3d texture " alt="texture3d" shape="rect" coords="532,56,655,80"/>
<area href="a00018.html" title="Cube map texture. " alt="texture_cube" shape="rect" coords="665,56,788,80"/>
<area href="a00019.html" title="Cube map array texture. " alt="texture_cube_array" shape="rect" coords="798,56,921,80"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ae7c1f35cf657c7bbe9eae2b39e44f728"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae7c1f35cf657c7bbe9eae2b39e44f728"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ae7c1f35cf657c7bbe9eae2b39e44f728">base_face</a> () const </td></tr>
<tr class="memdesc:ae7c1f35cf657c7bbe9eae2b39e44f728"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the base face of the texture instance, effectively a memory offset in the actual texture storage_type to identify where to start reading the faces. <br /></td></tr>
<tr class="separator:ae7c1f35cf657c7bbe9eae2b39e44f728"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1aeb020d8f82035e607b209c3841dee2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1aeb020d8f82035e607b209c3841dee2"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a1aeb020d8f82035e607b209c3841dee2">base_layer</a> () const </td></tr>
<tr class="memdesc:a1aeb020d8f82035e607b209c3841dee2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the base layer of the texture instance, effectively a memory offset in the actual texture storage_type to identify where to start reading the layers. <br /></td></tr>
<tr class="separator:a1aeb020d8f82035e607b209c3841dee2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01c07293e367b293736943e92f6a9e98"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a01c07293e367b293736943e92f6a9e98"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a01c07293e367b293736943e92f6a9e98">base_level</a> () const </td></tr>
<tr class="memdesc:a01c07293e367b293736943e92f6a9e98"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the base level of the texture instance, effectively a memory offset in the actual texture storage_type to identify where to start reading the levels. <br /></td></tr>
<tr class="separator:a01c07293e367b293736943e92f6a9e98"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8bb3912a3ce86b15842e79d0b421204"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8bb3912a3ce86b15842e79d0b421204"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a> ()</td></tr>
<tr class="memdesc:ac8bb3912a3ce86b15842e79d0b421204"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the entire texture storage_linear with zeros. <br /></td></tr>
<tr class="separator:ac8bb3912a3ce86b15842e79d0b421204"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5430e0073bc8a24264b7133f25f0edec"><td class="memTemplParams" colspan="2">template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a5430e0073bc8a24264b7133f25f0edec"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a5430e0073bc8a24264b7133f25f0edec">clear</a> (gen_type const &amp;Texel)</td></tr>
<tr class="memdesc:a5430e0073bc8a24264b7133f25f0edec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the entire texture storage_linear with Texel which type must match the texture storage_linear format block size If the type of gen_type doesn't match the type of the texture format, no conversion is performed and the data will be reinterpreted as if is was of the texture format. <a href="#a5430e0073bc8a24264b7133f25f0edec">More...</a><br /></td></tr>
<tr class="separator:a5430e0073bc8a24264b7133f25f0edec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54710883dcdf8a8f8f9bfc13e9dd5398"><td class="memTemplParams" colspan="2"><a class="anchor" id="a54710883dcdf8a8f8f9bfc13e9dd5398"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a54710883dcdf8a8f8f9bfc13e9dd5398"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a54710883dcdf8a8f8f9bfc13e9dd5398">clear</a> (size_type Layer, size_type Face, size_type Level, gen_type const &amp;BlockData)</td></tr>
<tr class="memdesc:a54710883dcdf8a8f8f9bfc13e9dd5398"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear a specific image of a texture. <br /></td></tr>
<tr class="separator:a54710883dcdf8a8f8f9bfc13e9dd5398"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1df5aef4908916286c693427ae042eca"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1df5aef4908916286c693427ae042eca"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a1df5aef4908916286c693427ae042eca"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a1df5aef4908916286c693427ae042eca">clear</a> (size_type Layer, size_type Face, size_type Level, extent_type const &amp;TexelOffset, extent_type const &amp;TexelExtent, gen_type const &amp;BlockData)</td></tr>
<tr class="memdesc:a1df5aef4908916286c693427ae042eca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear a subset of a specific image of a texture. <br /></td></tr>
<tr class="separator:a1df5aef4908916286c693427ae042eca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade92aae99ac3524a83809acdfd8c0715"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade92aae99ac3524a83809acdfd8c0715"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ade92aae99ac3524a83809acdfd8c0715">copy</a> (<a class="el" href="a00012.html">texture</a> const &amp;TextureSrc, size_t LayerSrc, size_t FaceSrc, size_t LevelSrc, size_t LayerDst, size_t FaceDst, size_t LevelDst)</td></tr>
<tr class="memdesc:ade92aae99ac3524a83809acdfd8c0715"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy a specific image of a texture. <br /></td></tr>
<tr class="separator:ade92aae99ac3524a83809acdfd8c0715"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace50b0c766f3c82847eda49459eec7e0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ace50b0c766f3c82847eda49459eec7e0"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ace50b0c766f3c82847eda49459eec7e0">copy</a> (<a class="el" href="a00012.html">texture</a> const &amp;TextureSrc, size_t LayerSrc, size_t FaceSrc, size_t LevelSrc, extent_type const &amp;OffsetSrc, size_t LayerDst, size_t FaceDst, size_t LevelDst, extent_type const &amp;OffsetDst, extent_type const &amp;Extent)</td></tr>
<tr class="memdesc:ace50b0c766f3c82847eda49459eec7e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy a subset of a specific image of a texture. <br /></td></tr>
<tr class="separator:ace50b0c766f3c82847eda49459eec7e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f2c67dc864c6b6e705710853b5568ef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f2c67dc864c6b6e705710853b5568ef"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a3f2c67dc864c6b6e705710853b5568ef">data</a> ()</td></tr>
<tr class="memdesc:a3f2c67dc864c6b6e705710853b5568ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:a3f2c67dc864c6b6e705710853b5568ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aecfb33a652ea3f984735a031e4af697f"><td class="memTemplParams" colspan="2"><a class="anchor" id="aecfb33a652ea3f984735a031e4af697f"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:aecfb33a652ea3f984735a031e4af697f"><td class="memTemplItemLeft" align="right" valign="top">gen_type *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#aecfb33a652ea3f984735a031e4af697f">data</a> ()</td></tr>
<tr class="memdesc:aecfb33a652ea3f984735a031e4af697f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:aecfb33a652ea3f984735a031e4af697f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec236abf7eac8ff4eec54eda033b9288"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec236abf7eac8ff4eec54eda033b9288"></a>
void const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aec236abf7eac8ff4eec54eda033b9288">data</a> () const </td></tr>
<tr class="memdesc:aec236abf7eac8ff4eec54eda033b9288"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:aec236abf7eac8ff4eec54eda033b9288"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c538fecdc895b20bbd61890bffe0fdb"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8c538fecdc895b20bbd61890bffe0fdb"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a8c538fecdc895b20bbd61890bffe0fdb"><td class="memTemplItemLeft" align="right" valign="top">gen_type const *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a8c538fecdc895b20bbd61890bffe0fdb">data</a> () const </td></tr>
<tr class="memdesc:a8c538fecdc895b20bbd61890bffe0fdb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:a8c538fecdc895b20bbd61890bffe0fdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76d02b884284dee754400f17bb7f5053"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a76d02b884284dee754400f17bb7f5053"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a76d02b884284dee754400f17bb7f5053">data</a> (size_type Layer, size_type Face, size_type Level)</td></tr>
<tr class="memdesc:a76d02b884284dee754400f17bb7f5053"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:a76d02b884284dee754400f17bb7f5053"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad0d21d1d0e5888e0d546dc585d30249"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad0d21d1d0e5888e0d546dc585d30249"></a>
void const *const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aad0d21d1d0e5888e0d546dc585d30249">data</a> (size_type Layer, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:aad0d21d1d0e5888e0d546dc585d30249"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:aad0d21d1d0e5888e0d546dc585d30249"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42214ff33bec0fa5dd52c2b0df7dcdbe"><td class="memTemplParams" colspan="2"><a class="anchor" id="a42214ff33bec0fa5dd52c2b0df7dcdbe"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a42214ff33bec0fa5dd52c2b0df7dcdbe"><td class="memTemplItemLeft" align="right" valign="top">gen_type *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a42214ff33bec0fa5dd52c2b0df7dcdbe">data</a> (size_type Layer, size_type Face, size_type Level)</td></tr>
<tr class="memdesc:a42214ff33bec0fa5dd52c2b0df7dcdbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:a42214ff33bec0fa5dd52c2b0df7dcdbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a272d7f02634851f003d81a25407ba782"><td class="memTemplParams" colspan="2"><a class="anchor" id="a272d7f02634851f003d81a25407ba782"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a272d7f02634851f003d81a25407ba782"><td class="memTemplItemLeft" align="right" valign="top">gen_type const *const&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a272d7f02634851f003d81a25407ba782">data</a> (size_type Layer, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:a272d7f02634851f003d81a25407ba782"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:a272d7f02634851f003d81a25407ba782"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6e61de369e994009e36f344f99c15ad"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac6e61de369e994009e36f344f99c15ad"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ac6e61de369e994009e36f344f99c15ad">empty</a> () const </td></tr>
<tr class="memdesc:ac6e61de369e994009e36f344f99c15ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return whether the texture instance is empty, no storage_type or description have been assigned to the instance. <br /></td></tr>
<tr class="separator:ac6e61de369e994009e36f344f99c15ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9122bf87edd23bd731bd9eaf072e757"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9122bf87edd23bd731bd9eaf072e757"></a>
extent_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aa9122bf87edd23bd731bd9eaf072e757">extent</a> (size_type Level=0) const </td></tr>
<tr class="memdesc:aa9122bf87edd23bd731bd9eaf072e757"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the size of a texture instance: width, height and depth. <br /></td></tr>
<tr class="separator:aa9122bf87edd23bd731bd9eaf072e757"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3914cdf138e9267662ac7147fe71d644"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3914cdf138e9267662ac7147fe71d644"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a3914cdf138e9267662ac7147fe71d644">faces</a> () const </td></tr>
<tr class="memdesc:a3914cdf138e9267662ac7147fe71d644"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <a class="el" href="a00012.html#aa18daf8e8534d4cefabf3b7dfd43a6f3" title="Return the max face of the texture instance, effectively a memory offset to the beginning of the last...">max_face()</a> - <a class="el" href="a00012.html#ae7c1f35cf657c7bbe9eae2b39e44f728" title="Return the base face of the texture instance, effectively a memory offset in the actual texture stora...">base_face()</a> + 1. <br /></td></tr>
<tr class="separator:a3914cdf138e9267662ac7147fe71d644"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad94928ca00873970455c1fb2d3c03fd8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad94928ca00873970455c1fb2d3c03fd8"></a>
<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ad94928ca00873970455c1fb2d3c03fd8">format</a> () const </td></tr>
<tr class="memdesc:ad94928ca00873970455c1fb2d3c03fd8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the texture instance format. <br /></td></tr>
<tr class="separator:ad94928ca00873970455c1fb2d3c03fd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac4e6a627c907856620b7eb161c9b85d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac4e6a627c907856620b7eb161c9b85d"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aac4e6a627c907856620b7eb161c9b85d">layers</a> () const </td></tr>
<tr class="memdesc:aac4e6a627c907856620b7eb161c9b85d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <a class="el" href="a00012.html#af8ae0072dcfb583fcd278650b3f55ec6" title="Return the max layer of the texture instance, effectively a memory offset to the beginning of the las...">max_layer()</a> - <a class="el" href="a00012.html#a1aeb020d8f82035e607b209c3841dee2" title="Return the base layer of the texture instance, effectively a memory offset in the actual texture stor...">base_layer()</a> + 1. <br /></td></tr>
<tr class="separator:aac4e6a627c907856620b7eb161c9b85d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b85eb415046f5a31b2d9eff8cefc24c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9b85eb415046f5a31b2d9eff8cefc24c"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a9b85eb415046f5a31b2d9eff8cefc24c">levels</a> () const </td></tr>
<tr class="memdesc:a9b85eb415046f5a31b2d9eff8cefc24c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <a class="el" href="a00012.html#ae174e356683cee9bf9d3e11df4d6f78a" title="Return the max level of the texture instance, effectively a memory offset to the beginning of the las...">max_level()</a> - <a class="el" href="a00012.html#a01c07293e367b293736943e92f6a9e98" title="Return the base level of the texture instance, effectively a memory offset in the actual texture stor...">base_level()</a> + 1. <br /></td></tr>
<tr class="separator:a9b85eb415046f5a31b2d9eff8cefc24c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a643d8893b84d50b7a3c7fc53b218da8a"><td class="memTemplParams" colspan="2"><a class="anchor" id="a643d8893b84d50b7a3c7fc53b218da8a"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a643d8893b84d50b7a3c7fc53b218da8a"><td class="memTemplItemLeft" align="right" valign="top">gen_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a643d8893b84d50b7a3c7fc53b218da8a">load</a> (extent_type const &amp;TexelCoord, size_type Layer, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:a643d8893b84d50b7a3c7fc53b218da8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch a texel from a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a643d8893b84d50b7a3c7fc53b218da8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa18daf8e8534d4cefabf3b7dfd43a6f3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa18daf8e8534d4cefabf3b7dfd43a6f3"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aa18daf8e8534d4cefabf3b7dfd43a6f3">max_face</a> () const </td></tr>
<tr class="memdesc:aa18daf8e8534d4cefabf3b7dfd43a6f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the max face of the texture instance, effectively a memory offset to the beginning of the last face in the actual texture storage_type that the texture instance can access. <br /></td></tr>
<tr class="separator:aa18daf8e8534d4cefabf3b7dfd43a6f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8ae0072dcfb583fcd278650b3f55ec6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8ae0072dcfb583fcd278650b3f55ec6"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#af8ae0072dcfb583fcd278650b3f55ec6">max_layer</a> () const </td></tr>
<tr class="memdesc:af8ae0072dcfb583fcd278650b3f55ec6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the max layer of the texture instance, effectively a memory offset to the beginning of the last layer in the actual texture storage_type that the texture instance can access. <br /></td></tr>
<tr class="separator:af8ae0072dcfb583fcd278650b3f55ec6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae174e356683cee9bf9d3e11df4d6f78a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae174e356683cee9bf9d3e11df4d6f78a"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ae174e356683cee9bf9d3e11df4d6f78a">max_level</a> () const </td></tr>
<tr class="memdesc:ae174e356683cee9bf9d3e11df4d6f78a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the max level of the texture instance, effectively a memory offset to the beginning of the last level in the actual texture storage_type that the texture instance can access. <br /></td></tr>
<tr class="separator:ae174e356683cee9bf9d3e11df4d6f78a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a503ab01f6c0142145d3434f6924714e7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a503ab01f6c0142145d3434f6924714e7"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a503ab01f6c0142145d3434f6924714e7">size</a> () const </td></tr>
<tr class="memdesc:a503ab01f6c0142145d3434f6924714e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the memory size of a texture instance storage_type in bytes. <br /></td></tr>
<tr class="separator:a503ab01f6c0142145d3434f6924714e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24789b8cce4dcbe8e0d3a47b68447aba"><td class="memTemplParams" colspan="2">template&lt;typename genType &gt; </td></tr>
<tr class="memitem:a24789b8cce4dcbe8e0d3a47b68447aba"><td class="memTemplItemLeft" align="right" valign="top">size_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a24789b8cce4dcbe8e0d3a47b68447aba">size</a> () const </td></tr>
<tr class="memdesc:a24789b8cce4dcbe8e0d3a47b68447aba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the number of blocks contained in a texture instance storage_type. <a href="#a24789b8cce4dcbe8e0d3a47b68447aba">More...</a><br /></td></tr>
<tr class="separator:a24789b8cce4dcbe8e0d3a47b68447aba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46f11d7b73797c3e4b9a6da00f505fd8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46f11d7b73797c3e4b9a6da00f505fd8"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a46f11d7b73797c3e4b9a6da00f505fd8">size</a> (size_type Level) const </td></tr>
<tr class="memdesc:a46f11d7b73797c3e4b9a6da00f505fd8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the memory size of a specific level identified by Level. <br /></td></tr>
<tr class="separator:a46f11d7b73797c3e4b9a6da00f505fd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a665df3b51266310cd164cd5aa9c6e80e"><td class="memTemplParams" colspan="2">template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a665df3b51266310cd164cd5aa9c6e80e"><td class="memTemplItemLeft" align="right" valign="top">size_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a665df3b51266310cd164cd5aa9c6e80e">size</a> (size_type Level) const </td></tr>
<tr class="memdesc:a665df3b51266310cd164cd5aa9c6e80e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the memory size of a specific level identified by Level. <a href="#a665df3b51266310cd164cd5aa9c6e80e">More...</a><br /></td></tr>
<tr class="separator:a665df3b51266310cd164cd5aa9c6e80e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a290419a437522cfe1981880fbfd9f810"><td class="memTemplParams" colspan="2"><a class="anchor" id="a290419a437522cfe1981880fbfd9f810"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a290419a437522cfe1981880fbfd9f810"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a290419a437522cfe1981880fbfd9f810">store</a> (extent_type const &amp;TexelCoord, size_type Layer, size_type Face, size_type Level, gen_type const &amp;Texel)</td></tr>
<tr class="memdesc:a290419a437522cfe1981880fbfd9f810"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a texel to a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a290419a437522cfe1981880fbfd9f810"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2c92d09106b13d3d20dd0909ada8a68"><td class="memTemplParams" colspan="2"><a class="anchor" id="aa2c92d09106b13d3d20dd0909ada8a68"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:aa2c92d09106b13d3d20dd0909ada8a68"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#aa2c92d09106b13d3d20dd0909ada8a68">swizzle</a> (gli::swizzles const &amp;Swizzles)</td></tr>
<tr class="memdesc:aa2c92d09106b13d3d20dd0909ada8a68"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reorder the component in texture memory. <br /></td></tr>
<tr class="separator:aa2c92d09106b13d3d20dd0909ada8a68"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59d3d7946e94bc294444c5f55db70c21"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59d3d7946e94bc294444c5f55db70c21"></a>
<a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a59d3d7946e94bc294444c5f55db70c21">target</a> () const </td></tr>
<tr class="memdesc:a59d3d7946e94bc294444c5f55db70c21"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the target of a texture instance. <br /></td></tr>
<tr class="separator:a59d3d7946e94bc294444c5f55db70c21"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9921e1ac4df78bce54d328affd59da28"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9921e1ac4df78bce54d328affd59da28"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a9921e1ac4df78bce54d328affd59da28">texture</a> ()</td></tr>
<tr class="memdesc:a9921e1ac4df78bce54d328affd59da28"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an empty texture instance. <br /></td></tr>
<tr class="separator:a9921e1ac4df78bce54d328affd59da28"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ca26840db935a649290350da2b5f5ca"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a4ca26840db935a649290350da2b5f5ca">texture</a> (<a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a> Target, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, extent_type const &amp;Extent, size_type Layers, size_type Faces, size_type Levels, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a4ca26840db935a649290350da2b5f5ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture object and allocate a texture storage for it. <a href="#a4ca26840db935a649290350da2b5f5ca">More...</a><br /></td></tr>
<tr class="separator:a4ca26840db935a649290350da2b5f5ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9bbe0e3db3a8e9b7878acf20bc9f4c81"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a9bbe0e3db3a8e9b7878acf20bc9f4c81">texture</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture, <a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a> Target, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, size_type BaseLayer, size_type MaxLayer, size_type BaseFace, size_type MaxFace, size_type BaseLevel, size_type MaxLevel, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a9bbe0e3db3a8e9b7878acf20bc9f4c81"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture object by sharing an existing texture storage_type from another texture instance. <a href="#a9bbe0e3db3a8e9b7878acf20bc9f4c81">More...</a><br /></td></tr>
<tr class="separator:a9bbe0e3db3a8e9b7878acf20bc9f4c81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3efa6c67e681cdb4630d99cbb355aa3d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a3efa6c67e681cdb4630d99cbb355aa3d">texture</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture, <a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a> Target, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a3efa6c67e681cdb4630d99cbb355aa3d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture object by sharing an existing texture storage_type from another texture instance. <a href="#a3efa6c67e681cdb4630d99cbb355aa3d">More...</a><br /></td></tr>
<tr class="separator:a3efa6c67e681cdb4630d99cbb355aa3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Genetic texture class. It can support any target. </p>
<p>Definition at line <a class="el" href="a00062_source.html#l00014">14</a> of file <a class="el" href="a00062_source.html">texture.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a4ca26840db935a649290350da2b5f5ca"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00012.html">texture</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a>&#160;</td>
<td class="paramname"><em>Target</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a>&#160;</td>
<td class="paramname"><em>Format</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">extent_type const &amp;&#160;</td>
<td class="paramname"><em>Extent</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_type&#160;</td>
<td class="paramname"><em>Layers</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_type&#160;</td>
<td class="paramname"><em>Faces</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_type&#160;</td>
<td class="paramname"><em>Levels</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">swizzles_type const &amp;&#160;</td>
<td class="paramname"><em>Swizzles</em> = <code>swizzles_type(SWIZZLE_RED,&#160;SWIZZLE_GREEN,&#160;SWIZZLE_BLUE,&#160;SWIZZLE_ALPHA)</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a texture object and allocate a texture storage for it. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">Target</td><td>Type/Shape of the texture storage_linear </td></tr>
<tr><td class="paramname">Format</td><td>Texel format </td></tr>
<tr><td class="paramname">Extent</td><td>Size of the texture: width, height and depth. </td></tr>
<tr><td class="paramname">Layers</td><td>Number of one-dimensional or two-dimensional images of identical size and format </td></tr>
<tr><td class="paramname">Faces</td><td>6 for cube map textures otherwise 1. </td></tr>
<tr><td class="paramname">Levels</td><td>Number of images in the texture mipmap chain. </td></tr>
<tr><td class="paramname">Swizzles</td><td>A mechanism to swizzle the components of a texture before they are applied according to the texture environment. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a9bbe0e3db3a8e9b7878acf20bc9f4c81"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00012.html">texture</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00012.html">texture</a> const &amp;&#160;</td>
<td class="paramname"><em>Texture</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a>&#160;</td>
<td class="paramname"><em>Target</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a>&#160;</td>
<td class="paramname"><em>Format</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_type&#160;</td>
<td class="paramname"><em>BaseLayer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_type&#160;</td>
<td class="paramname"><em>MaxLayer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_type&#160;</td>
<td class="paramname"><em>BaseFace</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_type&#160;</td>
<td class="paramname"><em>MaxFace</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_type&#160;</td>
<td class="paramname"><em>BaseLevel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_type&#160;</td>
<td class="paramname"><em>MaxLevel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">swizzles_type const &amp;&#160;</td>
<td class="paramname"><em>Swizzles</em> = <code>swizzles_type(SWIZZLE_RED,&#160;SWIZZLE_GREEN,&#160;SWIZZLE_BLUE,&#160;SWIZZLE_ALPHA)</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a texture object by sharing an existing texture storage_type from another texture instance. </p>
<p>This texture object is effectively a texture view where the layer, the face and the level allows identifying a specific subset of the texture storage_linear source. This texture object is effectively a texture view where the target and format can be reinterpreted with a different compatible texture target and texture format. </p>
</div>
</div>
<a class="anchor" id="a3efa6c67e681cdb4630d99cbb355aa3d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00012.html">texture</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00012.html">texture</a> const &amp;&#160;</td>
<td class="paramname"><em>Texture</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a>&#160;</td>
<td class="paramname"><em>Target</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a>&#160;</td>
<td class="paramname"><em>Format</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">swizzles_type const &amp;&#160;</td>
<td class="paramname"><em>Swizzles</em> = <code>swizzles_type(SWIZZLE_RED,&#160;SWIZZLE_GREEN,&#160;SWIZZLE_BLUE,&#160;SWIZZLE_ALPHA)</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a texture object by sharing an existing texture storage_type from another texture instance. </p>
<p>This texture object is effectively a texture view where the target and format can be reinterpreted with a different compatible texture target and texture format. </p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a5430e0073bc8a24264b7133f25f0edec"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void clear </td>
<td>(</td>
<td class="paramtype">gen_type const &amp;&#160;</td>
<td class="paramname"><em>Texel</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Clear the entire texture storage_linear with Texel which type must match the texture storage_linear format block size If the type of gen_type doesn't match the type of the texture format, no conversion is performed and the data will be reinterpreted as if is was of the texture format. </p>
</div>
</div>
<a class="anchor" id="a24789b8cce4dcbe8e0d3a47b68447aba"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">size_type size </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the number of blocks contained in a texture instance storage_type. </p>
<p>genType size must match the block size conresponding to the texture format. </p>
</div>
</div>
<a class="anchor" id="a665df3b51266310cd164cd5aa9c6e80e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">size_type size </td>
<td>(</td>
<td class="paramtype">size_type&#160;</td>
<td class="paramname"><em>Level</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the memory size of a specific level identified by Level. </p>
<p>genType size must match the block size conresponding to the texture format. </p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -1,326 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: texture1d Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="a00074.html">gli</a></li><li class="navelem"><a class="el" href="a00013.html">texture1d</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="a00091.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">texture1d Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>1d texture
<a href="a00013.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for texture1d:</div>
<div class="dyncontent">
<div class="center">
<img src="a00013.png" usemap="#texture1d_map" alt=""/>
<map id="texture1d_map" name="texture1d_map">
<area href="a00012.html" title="Genetic texture class. It can support any target. " alt="texture" shape="rect" coords="0,0,64,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aa9122bf87edd23bd731bd9eaf072e757"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9122bf87edd23bd731bd9eaf072e757"></a>
extent_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00013.html#aa9122bf87edd23bd731bd9eaf072e757">extent</a> (size_type Level=0) const </td></tr>
<tr class="memdesc:aa9122bf87edd23bd731bd9eaf072e757"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the width of a texture instance. <br /></td></tr>
<tr class="separator:aa9122bf87edd23bd731bd9eaf072e757"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91093dbf82799b0838fe1828cdfe05eb"><td class="memTemplParams" colspan="2"><a class="anchor" id="a91093dbf82799b0838fe1828cdfe05eb"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a91093dbf82799b0838fe1828cdfe05eb"><td class="memTemplItemLeft" align="right" valign="top">gen_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00013.html#a91093dbf82799b0838fe1828cdfe05eb">load</a> (extent_type const &amp;TexelCoord, size_type Level) const </td></tr>
<tr class="memdesc:a91093dbf82799b0838fe1828cdfe05eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch a texel from a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a91093dbf82799b0838fe1828cdfe05eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af56d4d7adaa673dfb24e406acbf362cc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af56d4d7adaa673dfb24e406acbf362cc"></a>
<a class="el" href="a00003.html">image</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00013.html#af56d4d7adaa673dfb24e406acbf362cc">operator[]</a> (size_type Level) const </td></tr>
<tr class="memdesc:af56d4d7adaa673dfb24e406acbf362cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a view of the image identified by Level in the mipmap chain of the texture. <br /></td></tr>
<tr class="separator:af56d4d7adaa673dfb24e406acbf362cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a50cbe79dfa186affb1811e96c73a95"><td class="memTemplParams" colspan="2"><a class="anchor" id="a9a50cbe79dfa186affb1811e96c73a95"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a9a50cbe79dfa186affb1811e96c73a95"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00013.html#a9a50cbe79dfa186affb1811e96c73a95">store</a> (extent_type const &amp;TexelCoord, size_type Level, gen_type const &amp;Texel)</td></tr>
<tr class="memdesc:a9a50cbe79dfa186affb1811e96c73a95"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a texel to a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a9a50cbe79dfa186affb1811e96c73a95"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a579755b34a02e8fe46aee5412deb1ef7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a579755b34a02e8fe46aee5412deb1ef7"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00013.html#a579755b34a02e8fe46aee5412deb1ef7">texture1d</a> ()</td></tr>
<tr class="memdesc:a579755b34a02e8fe46aee5412deb1ef7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an empty texture 1D. <br /></td></tr>
<tr class="separator:a579755b34a02e8fe46aee5412deb1ef7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80dd6008716471e50feacc3fa46a3c3d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a80dd6008716471e50feacc3fa46a3c3d"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00013.html#a80dd6008716471e50feacc3fa46a3c3d">texture1d</a> (<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, extent_type const &amp;Extent, size_type Levels, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a80dd6008716471e50feacc3fa46a3c3d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00013.html" title="1d texture ">texture1d</a> and allocate a new storage_linear. <br /></td></tr>
<tr class="separator:a80dd6008716471e50feacc3fa46a3c3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad99680d938ada40b96e8bc97ce8513f1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad99680d938ada40b96e8bc97ce8513f1"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00013.html#ad99680d938ada40b96e8bc97ce8513f1">texture1d</a> (<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, extent_type const &amp;Extent, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:ad99680d938ada40b96e8bc97ce8513f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00013.html" title="1d texture ">texture1d</a> and allocate a new storage_linear with a complete mipmap chain. <br /></td></tr>
<tr class="separator:ad99680d938ada40b96e8bc97ce8513f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad7c618fe79c33bcd9441ef1da7fcb262"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad7c618fe79c33bcd9441ef1da7fcb262"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00013.html#ad7c618fe79c33bcd9441ef1da7fcb262">texture1d</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture)</td></tr>
<tr class="memdesc:ad7c618fe79c33bcd9441ef1da7fcb262"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00013.html" title="1d texture ">texture1d</a> view with an existing storage_linear. <br /></td></tr>
<tr class="separator:ad7c618fe79c33bcd9441ef1da7fcb262"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add6f3e86ba6e7a397d85f0bfc0d1b429"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add6f3e86ba6e7a397d85f0bfc0d1b429"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00013.html#add6f3e86ba6e7a397d85f0bfc0d1b429">texture1d</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, size_type BaseLayer, size_type MaxLayer, size_type BaseFace, size_type MaxFace, size_type BaseLevel, size_type MaxLevel, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:add6f3e86ba6e7a397d85f0bfc0d1b429"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00013.html" title="1d texture ">texture1d</a> view with an existing storage_linear. <br /></td></tr>
<tr class="separator:add6f3e86ba6e7a397d85f0bfc0d1b429"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a81c842dc3bff0491e9ab7f3cc15b5a02"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a81c842dc3bff0491e9ab7f3cc15b5a02"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00013.html#a81c842dc3bff0491e9ab7f3cc15b5a02">texture1d</a> (<a class="el" href="a00013.html">texture1d</a> const &amp;Texture, size_type BaseLevel, size_type MaxLevel)</td></tr>
<tr class="memdesc:a81c842dc3bff0491e9ab7f3cc15b5a02"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00013.html" title="1d texture ">texture1d</a> view, reference a subset of an existing <a class="el" href="a00013.html" title="1d texture ">texture1d</a> instance. <br /></td></tr>
<tr class="separator:a81c842dc3bff0491e9ab7f3cc15b5a02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_a00012"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00012')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="a00012.html">texture</a></td></tr>
<tr class="memitem:ae7c1f35cf657c7bbe9eae2b39e44f728 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae7c1f35cf657c7bbe9eae2b39e44f728"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ae7c1f35cf657c7bbe9eae2b39e44f728">base_face</a> () const </td></tr>
<tr class="memdesc:ae7c1f35cf657c7bbe9eae2b39e44f728 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the base face of the texture instance, effectively a memory offset in the actual texture storage_type to identify where to start reading the faces. <br /></td></tr>
<tr class="separator:ae7c1f35cf657c7bbe9eae2b39e44f728 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1aeb020d8f82035e607b209c3841dee2 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1aeb020d8f82035e607b209c3841dee2"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a1aeb020d8f82035e607b209c3841dee2">base_layer</a> () const </td></tr>
<tr class="memdesc:a1aeb020d8f82035e607b209c3841dee2 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the base layer of the texture instance, effectively a memory offset in the actual texture storage_type to identify where to start reading the layers. <br /></td></tr>
<tr class="separator:a1aeb020d8f82035e607b209c3841dee2 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01c07293e367b293736943e92f6a9e98 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a01c07293e367b293736943e92f6a9e98"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a01c07293e367b293736943e92f6a9e98">base_level</a> () const </td></tr>
<tr class="memdesc:a01c07293e367b293736943e92f6a9e98 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the base level of the texture instance, effectively a memory offset in the actual texture storage_type to identify where to start reading the levels. <br /></td></tr>
<tr class="separator:a01c07293e367b293736943e92f6a9e98 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8bb3912a3ce86b15842e79d0b421204 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8bb3912a3ce86b15842e79d0b421204"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a> ()</td></tr>
<tr class="memdesc:ac8bb3912a3ce86b15842e79d0b421204 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the entire texture storage_linear with zeros. <br /></td></tr>
<tr class="separator:ac8bb3912a3ce86b15842e79d0b421204 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="memTemplParams" colspan="2">template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a5430e0073bc8a24264b7133f25f0edec">clear</a> (gen_type const &amp;Texel)</td></tr>
<tr class="memdesc:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the entire texture storage_linear with Texel which type must match the texture storage_linear format block size If the type of gen_type doesn't match the type of the texture format, no conversion is performed and the data will be reinterpreted as if is was of the texture format. <a href="#a5430e0073bc8a24264b7133f25f0edec">More...</a><br /></td></tr>
<tr class="separator:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a54710883dcdf8a8f8f9bfc13e9dd5398"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a54710883dcdf8a8f8f9bfc13e9dd5398">clear</a> (size_type Layer, size_type Face, size_type Level, gen_type const &amp;BlockData)</td></tr>
<tr class="memdesc:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear a specific image of a texture. <br /></td></tr>
<tr class="separator:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1df5aef4908916286c693427ae042eca"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a1df5aef4908916286c693427ae042eca">clear</a> (size_type Layer, size_type Face, size_type Level, extent_type const &amp;TexelOffset, extent_type const &amp;TexelExtent, gen_type const &amp;BlockData)</td></tr>
<tr class="memdesc:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear a subset of a specific image of a texture. <br /></td></tr>
<tr class="separator:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade92aae99ac3524a83809acdfd8c0715 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade92aae99ac3524a83809acdfd8c0715"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ade92aae99ac3524a83809acdfd8c0715">copy</a> (<a class="el" href="a00012.html">texture</a> const &amp;TextureSrc, size_t LayerSrc, size_t FaceSrc, size_t LevelSrc, size_t LayerDst, size_t FaceDst, size_t LevelDst)</td></tr>
<tr class="memdesc:ade92aae99ac3524a83809acdfd8c0715 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy a specific image of a texture. <br /></td></tr>
<tr class="separator:ade92aae99ac3524a83809acdfd8c0715 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace50b0c766f3c82847eda49459eec7e0 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ace50b0c766f3c82847eda49459eec7e0"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ace50b0c766f3c82847eda49459eec7e0">copy</a> (<a class="el" href="a00012.html">texture</a> const &amp;TextureSrc, size_t LayerSrc, size_t FaceSrc, size_t LevelSrc, extent_type const &amp;OffsetSrc, size_t LayerDst, size_t FaceDst, size_t LevelDst, extent_type const &amp;OffsetDst, extent_type const &amp;Extent)</td></tr>
<tr class="memdesc:ace50b0c766f3c82847eda49459eec7e0 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy a subset of a specific image of a texture. <br /></td></tr>
<tr class="separator:ace50b0c766f3c82847eda49459eec7e0 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f2c67dc864c6b6e705710853b5568ef inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f2c67dc864c6b6e705710853b5568ef"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a3f2c67dc864c6b6e705710853b5568ef">data</a> ()</td></tr>
<tr class="memdesc:a3f2c67dc864c6b6e705710853b5568ef inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:a3f2c67dc864c6b6e705710853b5568ef inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="aecfb33a652ea3f984735a031e4af697f"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#aecfb33a652ea3f984735a031e4af697f">data</a> ()</td></tr>
<tr class="memdesc:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec236abf7eac8ff4eec54eda033b9288 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec236abf7eac8ff4eec54eda033b9288"></a>
void const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aec236abf7eac8ff4eec54eda033b9288">data</a> () const </td></tr>
<tr class="memdesc:aec236abf7eac8ff4eec54eda033b9288 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:aec236abf7eac8ff4eec54eda033b9288 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8c538fecdc895b20bbd61890bffe0fdb"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type const *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a8c538fecdc895b20bbd61890bffe0fdb">data</a> () const </td></tr>
<tr class="memdesc:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76d02b884284dee754400f17bb7f5053 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a76d02b884284dee754400f17bb7f5053"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a76d02b884284dee754400f17bb7f5053">data</a> (size_type Layer, size_type Face, size_type Level)</td></tr>
<tr class="memdesc:a76d02b884284dee754400f17bb7f5053 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:a76d02b884284dee754400f17bb7f5053 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad0d21d1d0e5888e0d546dc585d30249 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad0d21d1d0e5888e0d546dc585d30249"></a>
void const *const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aad0d21d1d0e5888e0d546dc585d30249">data</a> (size_type Layer, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:aad0d21d1d0e5888e0d546dc585d30249 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:aad0d21d1d0e5888e0d546dc585d30249 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a42214ff33bec0fa5dd52c2b0df7dcdbe"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a42214ff33bec0fa5dd52c2b0df7dcdbe">data</a> (size_type Layer, size_type Face, size_type Level)</td></tr>
<tr class="memdesc:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a272d7f02634851f003d81a25407ba782"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type const *const&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a272d7f02634851f003d81a25407ba782">data</a> (size_type Layer, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6e61de369e994009e36f344f99c15ad inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac6e61de369e994009e36f344f99c15ad"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ac6e61de369e994009e36f344f99c15ad">empty</a> () const </td></tr>
<tr class="memdesc:ac6e61de369e994009e36f344f99c15ad inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return whether the texture instance is empty, no storage_type or description have been assigned to the instance. <br /></td></tr>
<tr class="separator:ac6e61de369e994009e36f344f99c15ad inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9122bf87edd23bd731bd9eaf072e757 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9122bf87edd23bd731bd9eaf072e757"></a>
extent_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aa9122bf87edd23bd731bd9eaf072e757">extent</a> (size_type Level=0) const </td></tr>
<tr class="memdesc:aa9122bf87edd23bd731bd9eaf072e757 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the size of a texture instance: width, height and depth. <br /></td></tr>
<tr class="separator:aa9122bf87edd23bd731bd9eaf072e757 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3914cdf138e9267662ac7147fe71d644 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3914cdf138e9267662ac7147fe71d644"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a3914cdf138e9267662ac7147fe71d644">faces</a> () const </td></tr>
<tr class="memdesc:a3914cdf138e9267662ac7147fe71d644 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <a class="el" href="a00012.html#aa18daf8e8534d4cefabf3b7dfd43a6f3" title="Return the max face of the texture instance, effectively a memory offset to the beginning of the last...">max_face()</a> - <a class="el" href="a00012.html#ae7c1f35cf657c7bbe9eae2b39e44f728" title="Return the base face of the texture instance, effectively a memory offset in the actual texture stora...">base_face()</a> + 1. <br /></td></tr>
<tr class="separator:a3914cdf138e9267662ac7147fe71d644 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad94928ca00873970455c1fb2d3c03fd8 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad94928ca00873970455c1fb2d3c03fd8"></a>
<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ad94928ca00873970455c1fb2d3c03fd8">format</a> () const </td></tr>
<tr class="memdesc:ad94928ca00873970455c1fb2d3c03fd8 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the texture instance format. <br /></td></tr>
<tr class="separator:ad94928ca00873970455c1fb2d3c03fd8 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac4e6a627c907856620b7eb161c9b85d inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac4e6a627c907856620b7eb161c9b85d"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aac4e6a627c907856620b7eb161c9b85d">layers</a> () const </td></tr>
<tr class="memdesc:aac4e6a627c907856620b7eb161c9b85d inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <a class="el" href="a00012.html#af8ae0072dcfb583fcd278650b3f55ec6" title="Return the max layer of the texture instance, effectively a memory offset to the beginning of the las...">max_layer()</a> - <a class="el" href="a00012.html#a1aeb020d8f82035e607b209c3841dee2" title="Return the base layer of the texture instance, effectively a memory offset in the actual texture stor...">base_layer()</a> + 1. <br /></td></tr>
<tr class="separator:aac4e6a627c907856620b7eb161c9b85d inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b85eb415046f5a31b2d9eff8cefc24c inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9b85eb415046f5a31b2d9eff8cefc24c"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a9b85eb415046f5a31b2d9eff8cefc24c">levels</a> () const </td></tr>
<tr class="memdesc:a9b85eb415046f5a31b2d9eff8cefc24c inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <a class="el" href="a00012.html#ae174e356683cee9bf9d3e11df4d6f78a" title="Return the max level of the texture instance, effectively a memory offset to the beginning of the las...">max_level()</a> - <a class="el" href="a00012.html#a01c07293e367b293736943e92f6a9e98" title="Return the base level of the texture instance, effectively a memory offset in the actual texture stor...">base_level()</a> + 1. <br /></td></tr>
<tr class="separator:a9b85eb415046f5a31b2d9eff8cefc24c inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a643d8893b84d50b7a3c7fc53b218da8a"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a643d8893b84d50b7a3c7fc53b218da8a">load</a> (extent_type const &amp;TexelCoord, size_type Layer, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch a texel from a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa18daf8e8534d4cefabf3b7dfd43a6f3 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa18daf8e8534d4cefabf3b7dfd43a6f3"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aa18daf8e8534d4cefabf3b7dfd43a6f3">max_face</a> () const </td></tr>
<tr class="memdesc:aa18daf8e8534d4cefabf3b7dfd43a6f3 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the max face of the texture instance, effectively a memory offset to the beginning of the last face in the actual texture storage_type that the texture instance can access. <br /></td></tr>
<tr class="separator:aa18daf8e8534d4cefabf3b7dfd43a6f3 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8ae0072dcfb583fcd278650b3f55ec6 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8ae0072dcfb583fcd278650b3f55ec6"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#af8ae0072dcfb583fcd278650b3f55ec6">max_layer</a> () const </td></tr>
<tr class="memdesc:af8ae0072dcfb583fcd278650b3f55ec6 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the max layer of the texture instance, effectively a memory offset to the beginning of the last layer in the actual texture storage_type that the texture instance can access. <br /></td></tr>
<tr class="separator:af8ae0072dcfb583fcd278650b3f55ec6 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae174e356683cee9bf9d3e11df4d6f78a inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae174e356683cee9bf9d3e11df4d6f78a"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ae174e356683cee9bf9d3e11df4d6f78a">max_level</a> () const </td></tr>
<tr class="memdesc:ae174e356683cee9bf9d3e11df4d6f78a inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the max level of the texture instance, effectively a memory offset to the beginning of the last level in the actual texture storage_type that the texture instance can access. <br /></td></tr>
<tr class="separator:ae174e356683cee9bf9d3e11df4d6f78a inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a503ab01f6c0142145d3434f6924714e7 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a503ab01f6c0142145d3434f6924714e7"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a503ab01f6c0142145d3434f6924714e7">size</a> () const </td></tr>
<tr class="memdesc:a503ab01f6c0142145d3434f6924714e7 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the memory size of a texture instance storage_type in bytes. <br /></td></tr>
<tr class="separator:a503ab01f6c0142145d3434f6924714e7 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="memTemplParams" colspan="2">template&lt;typename genType &gt; </td></tr>
<tr class="memitem:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">size_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a24789b8cce4dcbe8e0d3a47b68447aba">size</a> () const </td></tr>
<tr class="memdesc:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the number of blocks contained in a texture instance storage_type. <a href="#a24789b8cce4dcbe8e0d3a47b68447aba">More...</a><br /></td></tr>
<tr class="separator:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46f11d7b73797c3e4b9a6da00f505fd8 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46f11d7b73797c3e4b9a6da00f505fd8"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a46f11d7b73797c3e4b9a6da00f505fd8">size</a> (size_type Level) const </td></tr>
<tr class="memdesc:a46f11d7b73797c3e4b9a6da00f505fd8 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the memory size of a specific level identified by Level. <br /></td></tr>
<tr class="separator:a46f11d7b73797c3e4b9a6da00f505fd8 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="memTemplParams" colspan="2">template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">size_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a665df3b51266310cd164cd5aa9c6e80e">size</a> (size_type Level) const </td></tr>
<tr class="memdesc:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the memory size of a specific level identified by Level. <a href="#a665df3b51266310cd164cd5aa9c6e80e">More...</a><br /></td></tr>
<tr class="separator:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a290419a437522cfe1981880fbfd9f810"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a290419a437522cfe1981880fbfd9f810">store</a> (extent_type const &amp;TexelCoord, size_type Layer, size_type Face, size_type Level, gen_type const &amp;Texel)</td></tr>
<tr class="memdesc:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a texel to a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="aa2c92d09106b13d3d20dd0909ada8a68"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#aa2c92d09106b13d3d20dd0909ada8a68">swizzle</a> (gli::swizzles const &amp;Swizzles)</td></tr>
<tr class="memdesc:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reorder the component in texture memory. <br /></td></tr>
<tr class="separator:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59d3d7946e94bc294444c5f55db70c21 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59d3d7946e94bc294444c5f55db70c21"></a>
<a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a59d3d7946e94bc294444c5f55db70c21">target</a> () const </td></tr>
<tr class="memdesc:a59d3d7946e94bc294444c5f55db70c21 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the target of a texture instance. <br /></td></tr>
<tr class="separator:a59d3d7946e94bc294444c5f55db70c21 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9921e1ac4df78bce54d328affd59da28 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9921e1ac4df78bce54d328affd59da28"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a9921e1ac4df78bce54d328affd59da28">texture</a> ()</td></tr>
<tr class="memdesc:a9921e1ac4df78bce54d328affd59da28 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an empty texture instance. <br /></td></tr>
<tr class="separator:a9921e1ac4df78bce54d328affd59da28 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ca26840db935a649290350da2b5f5ca inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a4ca26840db935a649290350da2b5f5ca">texture</a> (<a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a> Target, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, extent_type const &amp;Extent, size_type Layers, size_type Faces, size_type Levels, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a4ca26840db935a649290350da2b5f5ca inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture object and allocate a texture storage for it. <a href="#a4ca26840db935a649290350da2b5f5ca">More...</a><br /></td></tr>
<tr class="separator:a4ca26840db935a649290350da2b5f5ca inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9bbe0e3db3a8e9b7878acf20bc9f4c81 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a9bbe0e3db3a8e9b7878acf20bc9f4c81">texture</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture, <a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a> Target, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, size_type BaseLayer, size_type MaxLayer, size_type BaseFace, size_type MaxFace, size_type BaseLevel, size_type MaxLevel, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a9bbe0e3db3a8e9b7878acf20bc9f4c81 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture object by sharing an existing texture storage_type from another texture instance. <a href="#a9bbe0e3db3a8e9b7878acf20bc9f4c81">More...</a><br /></td></tr>
<tr class="separator:a9bbe0e3db3a8e9b7878acf20bc9f4c81 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3efa6c67e681cdb4630d99cbb355aa3d inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a3efa6c67e681cdb4630d99cbb355aa3d">texture</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture, <a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a> Target, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a3efa6c67e681cdb4630d99cbb355aa3d inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture object by sharing an existing texture storage_type from another texture instance. <a href="#a3efa6c67e681cdb4630d99cbb355aa3d">More...</a><br /></td></tr>
<tr class="separator:a3efa6c67e681cdb4630d99cbb355aa3d inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>1d texture </p>
<p>Definition at line <a class="el" href="a00063_source.html#l00012">12</a> of file <a class="el" href="a00063_source.html">texture1d.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 360 B

View File

@ -1,326 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: texture1d_array Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="a00074.html">gli</a></li><li class="navelem"><a class="el" href="a00014.html">texture1d_array</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="a00092.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">texture1d_array Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>1d array texture
<a href="a00014.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for texture1d_array:</div>
<div class="dyncontent">
<div class="center">
<img src="a00014.png" usemap="#texture1d_array_map" alt=""/>
<map id="texture1d_array_map" name="texture1d_array_map">
<area href="a00012.html" title="Genetic texture class. It can support any target. " alt="texture" shape="rect" coords="0,0,102,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aa9122bf87edd23bd731bd9eaf072e757"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9122bf87edd23bd731bd9eaf072e757"></a>
extent_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#aa9122bf87edd23bd731bd9eaf072e757">extent</a> (size_type Level=0) const </td></tr>
<tr class="memdesc:aa9122bf87edd23bd731bd9eaf072e757"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the width of a texture instance. <br /></td></tr>
<tr class="separator:aa9122bf87edd23bd731bd9eaf072e757"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27ef7ed3e610ae892d7b3466955f06d4"><td class="memTemplParams" colspan="2"><a class="anchor" id="a27ef7ed3e610ae892d7b3466955f06d4"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a27ef7ed3e610ae892d7b3466955f06d4"><td class="memTemplItemLeft" align="right" valign="top">gen_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00014.html#a27ef7ed3e610ae892d7b3466955f06d4">load</a> (extent_type const &amp;TexelCoord, size_type Layer, size_type Level) const </td></tr>
<tr class="memdesc:a27ef7ed3e610ae892d7b3466955f06d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch a texel from a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a27ef7ed3e610ae892d7b3466955f06d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade427841f78be2e38a148036263f3f10"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade427841f78be2e38a148036263f3f10"></a>
<a class="el" href="a00013.html">texture1d</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#ade427841f78be2e38a148036263f3f10">operator[]</a> (size_type Layer) const </td></tr>
<tr class="memdesc:ade427841f78be2e38a148036263f3f10"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a view of the texture identified by Layer in the texture array. <br /></td></tr>
<tr class="separator:ade427841f78be2e38a148036263f3f10"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe87e955daebade5b96163121013195d"><td class="memTemplParams" colspan="2"><a class="anchor" id="afe87e955daebade5b96163121013195d"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:afe87e955daebade5b96163121013195d"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00014.html#afe87e955daebade5b96163121013195d">store</a> (extent_type const &amp;TexelCoord, size_type Layer, size_type Level, gen_type const &amp;Texel)</td></tr>
<tr class="memdesc:afe87e955daebade5b96163121013195d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a texel to a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:afe87e955daebade5b96163121013195d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f0fefbe9069e366108d89f5d33ec5ca"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2f0fefbe9069e366108d89f5d33ec5ca"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#a2f0fefbe9069e366108d89f5d33ec5ca">texture1d_array</a> ()</td></tr>
<tr class="memdesc:a2f0fefbe9069e366108d89f5d33ec5ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an empty texture 1D array. <br /></td></tr>
<tr class="separator:a2f0fefbe9069e366108d89f5d33ec5ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a67a2aba1380f3099271c3869f866836e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a67a2aba1380f3099271c3869f866836e"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#a67a2aba1380f3099271c3869f866836e">texture1d_array</a> (<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, extent_type const &amp;Extent, size_type Layers, size_type Levels, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a67a2aba1380f3099271c3869f866836e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00014.html" title="1d array texture ">texture1d_array</a> and allocate a new storage_linear. <br /></td></tr>
<tr class="separator:a67a2aba1380f3099271c3869f866836e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a322725501e112abe2bae19f4a2b4c3d8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a322725501e112abe2bae19f4a2b4c3d8"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#a322725501e112abe2bae19f4a2b4c3d8">texture1d_array</a> (<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, extent_type const &amp;Extent, size_type Layers, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a322725501e112abe2bae19f4a2b4c3d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00014.html" title="1d array texture ">texture1d_array</a> and allocate a new storage_linear with a complete mipmap chain. <br /></td></tr>
<tr class="separator:a322725501e112abe2bae19f4a2b4c3d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a57a62c2d8f5bf6f31e9c09a8fc82dea1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a57a62c2d8f5bf6f31e9c09a8fc82dea1"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#a57a62c2d8f5bf6f31e9c09a8fc82dea1">texture1d_array</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture)</td></tr>
<tr class="memdesc:a57a62c2d8f5bf6f31e9c09a8fc82dea1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00014.html" title="1d array texture ">texture1d_array</a> view with an existing storage_linear. <br /></td></tr>
<tr class="separator:a57a62c2d8f5bf6f31e9c09a8fc82dea1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74e472e98b66c02455a11c299b3a2840"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a74e472e98b66c02455a11c299b3a2840"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#a74e472e98b66c02455a11c299b3a2840">texture1d_array</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, size_type BaseLayer, size_type MaxLayer, size_type BaseFace, size_type MaxFace, size_type BaseLevel, size_type MaxLevel, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a74e472e98b66c02455a11c299b3a2840"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00014.html" title="1d array texture ">texture1d_array</a> view with an existing storage_linear. <br /></td></tr>
<tr class="separator:a74e472e98b66c02455a11c299b3a2840"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54ec1dba555e7d043c09024caec7c23d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a54ec1dba555e7d043c09024caec7c23d"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#a54ec1dba555e7d043c09024caec7c23d">texture1d_array</a> (<a class="el" href="a00014.html">texture1d_array</a> const &amp;Texture, size_type BaseLayer, size_type MaxLayer, size_type BaseLevel, size_type MaxLevel)</td></tr>
<tr class="memdesc:a54ec1dba555e7d043c09024caec7c23d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture view, reference a subset of an exiting storage_linear. <br /></td></tr>
<tr class="separator:a54ec1dba555e7d043c09024caec7c23d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_a00012"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00012')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="a00012.html">texture</a></td></tr>
<tr class="memitem:ae7c1f35cf657c7bbe9eae2b39e44f728 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae7c1f35cf657c7bbe9eae2b39e44f728"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ae7c1f35cf657c7bbe9eae2b39e44f728">base_face</a> () const </td></tr>
<tr class="memdesc:ae7c1f35cf657c7bbe9eae2b39e44f728 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the base face of the texture instance, effectively a memory offset in the actual texture storage_type to identify where to start reading the faces. <br /></td></tr>
<tr class="separator:ae7c1f35cf657c7bbe9eae2b39e44f728 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1aeb020d8f82035e607b209c3841dee2 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1aeb020d8f82035e607b209c3841dee2"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a1aeb020d8f82035e607b209c3841dee2">base_layer</a> () const </td></tr>
<tr class="memdesc:a1aeb020d8f82035e607b209c3841dee2 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the base layer of the texture instance, effectively a memory offset in the actual texture storage_type to identify where to start reading the layers. <br /></td></tr>
<tr class="separator:a1aeb020d8f82035e607b209c3841dee2 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01c07293e367b293736943e92f6a9e98 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a01c07293e367b293736943e92f6a9e98"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a01c07293e367b293736943e92f6a9e98">base_level</a> () const </td></tr>
<tr class="memdesc:a01c07293e367b293736943e92f6a9e98 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the base level of the texture instance, effectively a memory offset in the actual texture storage_type to identify where to start reading the levels. <br /></td></tr>
<tr class="separator:a01c07293e367b293736943e92f6a9e98 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8bb3912a3ce86b15842e79d0b421204 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8bb3912a3ce86b15842e79d0b421204"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a> ()</td></tr>
<tr class="memdesc:ac8bb3912a3ce86b15842e79d0b421204 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the entire texture storage_linear with zeros. <br /></td></tr>
<tr class="separator:ac8bb3912a3ce86b15842e79d0b421204 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="memTemplParams" colspan="2">template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a5430e0073bc8a24264b7133f25f0edec">clear</a> (gen_type const &amp;Texel)</td></tr>
<tr class="memdesc:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the entire texture storage_linear with Texel which type must match the texture storage_linear format block size If the type of gen_type doesn't match the type of the texture format, no conversion is performed and the data will be reinterpreted as if is was of the texture format. <a href="#a5430e0073bc8a24264b7133f25f0edec">More...</a><br /></td></tr>
<tr class="separator:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a54710883dcdf8a8f8f9bfc13e9dd5398"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a54710883dcdf8a8f8f9bfc13e9dd5398">clear</a> (size_type Layer, size_type Face, size_type Level, gen_type const &amp;BlockData)</td></tr>
<tr class="memdesc:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear a specific image of a texture. <br /></td></tr>
<tr class="separator:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1df5aef4908916286c693427ae042eca"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a1df5aef4908916286c693427ae042eca">clear</a> (size_type Layer, size_type Face, size_type Level, extent_type const &amp;TexelOffset, extent_type const &amp;TexelExtent, gen_type const &amp;BlockData)</td></tr>
<tr class="memdesc:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear a subset of a specific image of a texture. <br /></td></tr>
<tr class="separator:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade92aae99ac3524a83809acdfd8c0715 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade92aae99ac3524a83809acdfd8c0715"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ade92aae99ac3524a83809acdfd8c0715">copy</a> (<a class="el" href="a00012.html">texture</a> const &amp;TextureSrc, size_t LayerSrc, size_t FaceSrc, size_t LevelSrc, size_t LayerDst, size_t FaceDst, size_t LevelDst)</td></tr>
<tr class="memdesc:ade92aae99ac3524a83809acdfd8c0715 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy a specific image of a texture. <br /></td></tr>
<tr class="separator:ade92aae99ac3524a83809acdfd8c0715 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace50b0c766f3c82847eda49459eec7e0 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ace50b0c766f3c82847eda49459eec7e0"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ace50b0c766f3c82847eda49459eec7e0">copy</a> (<a class="el" href="a00012.html">texture</a> const &amp;TextureSrc, size_t LayerSrc, size_t FaceSrc, size_t LevelSrc, extent_type const &amp;OffsetSrc, size_t LayerDst, size_t FaceDst, size_t LevelDst, extent_type const &amp;OffsetDst, extent_type const &amp;Extent)</td></tr>
<tr class="memdesc:ace50b0c766f3c82847eda49459eec7e0 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy a subset of a specific image of a texture. <br /></td></tr>
<tr class="separator:ace50b0c766f3c82847eda49459eec7e0 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f2c67dc864c6b6e705710853b5568ef inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f2c67dc864c6b6e705710853b5568ef"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a3f2c67dc864c6b6e705710853b5568ef">data</a> ()</td></tr>
<tr class="memdesc:a3f2c67dc864c6b6e705710853b5568ef inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:a3f2c67dc864c6b6e705710853b5568ef inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="aecfb33a652ea3f984735a031e4af697f"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#aecfb33a652ea3f984735a031e4af697f">data</a> ()</td></tr>
<tr class="memdesc:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec236abf7eac8ff4eec54eda033b9288 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec236abf7eac8ff4eec54eda033b9288"></a>
void const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aec236abf7eac8ff4eec54eda033b9288">data</a> () const </td></tr>
<tr class="memdesc:aec236abf7eac8ff4eec54eda033b9288 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:aec236abf7eac8ff4eec54eda033b9288 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8c538fecdc895b20bbd61890bffe0fdb"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type const *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a8c538fecdc895b20bbd61890bffe0fdb">data</a> () const </td></tr>
<tr class="memdesc:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76d02b884284dee754400f17bb7f5053 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a76d02b884284dee754400f17bb7f5053"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a76d02b884284dee754400f17bb7f5053">data</a> (size_type Layer, size_type Face, size_type Level)</td></tr>
<tr class="memdesc:a76d02b884284dee754400f17bb7f5053 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:a76d02b884284dee754400f17bb7f5053 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad0d21d1d0e5888e0d546dc585d30249 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad0d21d1d0e5888e0d546dc585d30249"></a>
void const *const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aad0d21d1d0e5888e0d546dc585d30249">data</a> (size_type Layer, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:aad0d21d1d0e5888e0d546dc585d30249 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:aad0d21d1d0e5888e0d546dc585d30249 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a42214ff33bec0fa5dd52c2b0df7dcdbe"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a42214ff33bec0fa5dd52c2b0df7dcdbe">data</a> (size_type Layer, size_type Face, size_type Level)</td></tr>
<tr class="memdesc:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a272d7f02634851f003d81a25407ba782"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type const *const&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a272d7f02634851f003d81a25407ba782">data</a> (size_type Layer, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6e61de369e994009e36f344f99c15ad inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac6e61de369e994009e36f344f99c15ad"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ac6e61de369e994009e36f344f99c15ad">empty</a> () const </td></tr>
<tr class="memdesc:ac6e61de369e994009e36f344f99c15ad inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return whether the texture instance is empty, no storage_type or description have been assigned to the instance. <br /></td></tr>
<tr class="separator:ac6e61de369e994009e36f344f99c15ad inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9122bf87edd23bd731bd9eaf072e757 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9122bf87edd23bd731bd9eaf072e757"></a>
extent_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aa9122bf87edd23bd731bd9eaf072e757">extent</a> (size_type Level=0) const </td></tr>
<tr class="memdesc:aa9122bf87edd23bd731bd9eaf072e757 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the size of a texture instance: width, height and depth. <br /></td></tr>
<tr class="separator:aa9122bf87edd23bd731bd9eaf072e757 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3914cdf138e9267662ac7147fe71d644 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3914cdf138e9267662ac7147fe71d644"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a3914cdf138e9267662ac7147fe71d644">faces</a> () const </td></tr>
<tr class="memdesc:a3914cdf138e9267662ac7147fe71d644 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <a class="el" href="a00012.html#aa18daf8e8534d4cefabf3b7dfd43a6f3" title="Return the max face of the texture instance, effectively a memory offset to the beginning of the last...">max_face()</a> - <a class="el" href="a00012.html#ae7c1f35cf657c7bbe9eae2b39e44f728" title="Return the base face of the texture instance, effectively a memory offset in the actual texture stora...">base_face()</a> + 1. <br /></td></tr>
<tr class="separator:a3914cdf138e9267662ac7147fe71d644 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad94928ca00873970455c1fb2d3c03fd8 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad94928ca00873970455c1fb2d3c03fd8"></a>
<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ad94928ca00873970455c1fb2d3c03fd8">format</a> () const </td></tr>
<tr class="memdesc:ad94928ca00873970455c1fb2d3c03fd8 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the texture instance format. <br /></td></tr>
<tr class="separator:ad94928ca00873970455c1fb2d3c03fd8 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac4e6a627c907856620b7eb161c9b85d inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac4e6a627c907856620b7eb161c9b85d"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aac4e6a627c907856620b7eb161c9b85d">layers</a> () const </td></tr>
<tr class="memdesc:aac4e6a627c907856620b7eb161c9b85d inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <a class="el" href="a00012.html#af8ae0072dcfb583fcd278650b3f55ec6" title="Return the max layer of the texture instance, effectively a memory offset to the beginning of the las...">max_layer()</a> - <a class="el" href="a00012.html#a1aeb020d8f82035e607b209c3841dee2" title="Return the base layer of the texture instance, effectively a memory offset in the actual texture stor...">base_layer()</a> + 1. <br /></td></tr>
<tr class="separator:aac4e6a627c907856620b7eb161c9b85d inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b85eb415046f5a31b2d9eff8cefc24c inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9b85eb415046f5a31b2d9eff8cefc24c"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a9b85eb415046f5a31b2d9eff8cefc24c">levels</a> () const </td></tr>
<tr class="memdesc:a9b85eb415046f5a31b2d9eff8cefc24c inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <a class="el" href="a00012.html#ae174e356683cee9bf9d3e11df4d6f78a" title="Return the max level of the texture instance, effectively a memory offset to the beginning of the las...">max_level()</a> - <a class="el" href="a00012.html#a01c07293e367b293736943e92f6a9e98" title="Return the base level of the texture instance, effectively a memory offset in the actual texture stor...">base_level()</a> + 1. <br /></td></tr>
<tr class="separator:a9b85eb415046f5a31b2d9eff8cefc24c inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a643d8893b84d50b7a3c7fc53b218da8a"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a643d8893b84d50b7a3c7fc53b218da8a">load</a> (extent_type const &amp;TexelCoord, size_type Layer, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch a texel from a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa18daf8e8534d4cefabf3b7dfd43a6f3 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa18daf8e8534d4cefabf3b7dfd43a6f3"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aa18daf8e8534d4cefabf3b7dfd43a6f3">max_face</a> () const </td></tr>
<tr class="memdesc:aa18daf8e8534d4cefabf3b7dfd43a6f3 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the max face of the texture instance, effectively a memory offset to the beginning of the last face in the actual texture storage_type that the texture instance can access. <br /></td></tr>
<tr class="separator:aa18daf8e8534d4cefabf3b7dfd43a6f3 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8ae0072dcfb583fcd278650b3f55ec6 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8ae0072dcfb583fcd278650b3f55ec6"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#af8ae0072dcfb583fcd278650b3f55ec6">max_layer</a> () const </td></tr>
<tr class="memdesc:af8ae0072dcfb583fcd278650b3f55ec6 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the max layer of the texture instance, effectively a memory offset to the beginning of the last layer in the actual texture storage_type that the texture instance can access. <br /></td></tr>
<tr class="separator:af8ae0072dcfb583fcd278650b3f55ec6 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae174e356683cee9bf9d3e11df4d6f78a inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae174e356683cee9bf9d3e11df4d6f78a"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ae174e356683cee9bf9d3e11df4d6f78a">max_level</a> () const </td></tr>
<tr class="memdesc:ae174e356683cee9bf9d3e11df4d6f78a inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the max level of the texture instance, effectively a memory offset to the beginning of the last level in the actual texture storage_type that the texture instance can access. <br /></td></tr>
<tr class="separator:ae174e356683cee9bf9d3e11df4d6f78a inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a503ab01f6c0142145d3434f6924714e7 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a503ab01f6c0142145d3434f6924714e7"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a503ab01f6c0142145d3434f6924714e7">size</a> () const </td></tr>
<tr class="memdesc:a503ab01f6c0142145d3434f6924714e7 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the memory size of a texture instance storage_type in bytes. <br /></td></tr>
<tr class="separator:a503ab01f6c0142145d3434f6924714e7 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="memTemplParams" colspan="2">template&lt;typename genType &gt; </td></tr>
<tr class="memitem:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">size_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a24789b8cce4dcbe8e0d3a47b68447aba">size</a> () const </td></tr>
<tr class="memdesc:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the number of blocks contained in a texture instance storage_type. <a href="#a24789b8cce4dcbe8e0d3a47b68447aba">More...</a><br /></td></tr>
<tr class="separator:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46f11d7b73797c3e4b9a6da00f505fd8 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46f11d7b73797c3e4b9a6da00f505fd8"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a46f11d7b73797c3e4b9a6da00f505fd8">size</a> (size_type Level) const </td></tr>
<tr class="memdesc:a46f11d7b73797c3e4b9a6da00f505fd8 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the memory size of a specific level identified by Level. <br /></td></tr>
<tr class="separator:a46f11d7b73797c3e4b9a6da00f505fd8 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="memTemplParams" colspan="2">template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">size_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a665df3b51266310cd164cd5aa9c6e80e">size</a> (size_type Level) const </td></tr>
<tr class="memdesc:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the memory size of a specific level identified by Level. <a href="#a665df3b51266310cd164cd5aa9c6e80e">More...</a><br /></td></tr>
<tr class="separator:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a290419a437522cfe1981880fbfd9f810"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a290419a437522cfe1981880fbfd9f810">store</a> (extent_type const &amp;TexelCoord, size_type Layer, size_type Face, size_type Level, gen_type const &amp;Texel)</td></tr>
<tr class="memdesc:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a texel to a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="aa2c92d09106b13d3d20dd0909ada8a68"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#aa2c92d09106b13d3d20dd0909ada8a68">swizzle</a> (gli::swizzles const &amp;Swizzles)</td></tr>
<tr class="memdesc:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reorder the component in texture memory. <br /></td></tr>
<tr class="separator:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59d3d7946e94bc294444c5f55db70c21 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59d3d7946e94bc294444c5f55db70c21"></a>
<a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a59d3d7946e94bc294444c5f55db70c21">target</a> () const </td></tr>
<tr class="memdesc:a59d3d7946e94bc294444c5f55db70c21 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the target of a texture instance. <br /></td></tr>
<tr class="separator:a59d3d7946e94bc294444c5f55db70c21 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9921e1ac4df78bce54d328affd59da28 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9921e1ac4df78bce54d328affd59da28"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a9921e1ac4df78bce54d328affd59da28">texture</a> ()</td></tr>
<tr class="memdesc:a9921e1ac4df78bce54d328affd59da28 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an empty texture instance. <br /></td></tr>
<tr class="separator:a9921e1ac4df78bce54d328affd59da28 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ca26840db935a649290350da2b5f5ca inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a4ca26840db935a649290350da2b5f5ca">texture</a> (<a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a> Target, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, extent_type const &amp;Extent, size_type Layers, size_type Faces, size_type Levels, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a4ca26840db935a649290350da2b5f5ca inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture object and allocate a texture storage for it. <a href="#a4ca26840db935a649290350da2b5f5ca">More...</a><br /></td></tr>
<tr class="separator:a4ca26840db935a649290350da2b5f5ca inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9bbe0e3db3a8e9b7878acf20bc9f4c81 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a9bbe0e3db3a8e9b7878acf20bc9f4c81">texture</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture, <a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a> Target, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, size_type BaseLayer, size_type MaxLayer, size_type BaseFace, size_type MaxFace, size_type BaseLevel, size_type MaxLevel, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a9bbe0e3db3a8e9b7878acf20bc9f4c81 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture object by sharing an existing texture storage_type from another texture instance. <a href="#a9bbe0e3db3a8e9b7878acf20bc9f4c81">More...</a><br /></td></tr>
<tr class="separator:a9bbe0e3db3a8e9b7878acf20bc9f4c81 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3efa6c67e681cdb4630d99cbb355aa3d inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a3efa6c67e681cdb4630d99cbb355aa3d">texture</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture, <a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a> Target, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a3efa6c67e681cdb4630d99cbb355aa3d inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture object by sharing an existing texture storage_type from another texture instance. <a href="#a3efa6c67e681cdb4630d99cbb355aa3d">More...</a><br /></td></tr>
<tr class="separator:a3efa6c67e681cdb4630d99cbb355aa3d inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>1d array texture </p>
<p>Definition at line <a class="el" href="a00064_source.html#l00011">11</a> of file <a class="el" href="a00064_source.html">texture1d_array.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 465 B

View File

@ -1,326 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: texture2d Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="a00074.html">gli</a></li><li class="navelem"><a class="el" href="a00015.html">texture2d</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="a00093.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">texture2d Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>2d texture
<a href="a00015.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for texture2d:</div>
<div class="dyncontent">
<div class="center">
<img src="a00015.png" usemap="#texture2d_map" alt=""/>
<map id="texture2d_map" name="texture2d_map">
<area href="a00012.html" title="Genetic texture class. It can support any target. " alt="texture" shape="rect" coords="0,0,64,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aa9122bf87edd23bd731bd9eaf072e757"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9122bf87edd23bd731bd9eaf072e757"></a>
extent_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00015.html#aa9122bf87edd23bd731bd9eaf072e757">extent</a> (size_type Level=0) const </td></tr>
<tr class="memdesc:aa9122bf87edd23bd731bd9eaf072e757"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the dimensions of a texture instance: width and height. <br /></td></tr>
<tr class="separator:aa9122bf87edd23bd731bd9eaf072e757"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91093dbf82799b0838fe1828cdfe05eb"><td class="memTemplParams" colspan="2"><a class="anchor" id="a91093dbf82799b0838fe1828cdfe05eb"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a91093dbf82799b0838fe1828cdfe05eb"><td class="memTemplItemLeft" align="right" valign="top">gen_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00015.html#a91093dbf82799b0838fe1828cdfe05eb">load</a> (extent_type const &amp;TexelCoord, size_type Level) const </td></tr>
<tr class="memdesc:a91093dbf82799b0838fe1828cdfe05eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch a texel from a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a91093dbf82799b0838fe1828cdfe05eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af56d4d7adaa673dfb24e406acbf362cc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af56d4d7adaa673dfb24e406acbf362cc"></a>
<a class="el" href="a00003.html">image</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00015.html#af56d4d7adaa673dfb24e406acbf362cc">operator[]</a> (size_type Level) const </td></tr>
<tr class="memdesc:af56d4d7adaa673dfb24e406acbf362cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a view of the image identified by Level in the mipmap chain of the texture. <br /></td></tr>
<tr class="separator:af56d4d7adaa673dfb24e406acbf362cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a50cbe79dfa186affb1811e96c73a95"><td class="memTemplParams" colspan="2"><a class="anchor" id="a9a50cbe79dfa186affb1811e96c73a95"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a9a50cbe79dfa186affb1811e96c73a95"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00015.html#a9a50cbe79dfa186affb1811e96c73a95">store</a> (extent_type const &amp;TexelCoord, size_type Level, gen_type const &amp;Texel)</td></tr>
<tr class="memdesc:a9a50cbe79dfa186affb1811e96c73a95"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a texel to a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a9a50cbe79dfa186affb1811e96c73a95"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a721a1e4ccb258d43fadf7224889d6198"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a721a1e4ccb258d43fadf7224889d6198"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00015.html#a721a1e4ccb258d43fadf7224889d6198">texture2d</a> ()</td></tr>
<tr class="memdesc:a721a1e4ccb258d43fadf7224889d6198"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an empty texture 2D. <br /></td></tr>
<tr class="separator:a721a1e4ccb258d43fadf7224889d6198"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a9985c0e7c934e98e1ec2b7c80d0977"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4a9985c0e7c934e98e1ec2b7c80d0977"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00015.html#a4a9985c0e7c934e98e1ec2b7c80d0977">texture2d</a> (<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, extent_type const &amp;Extent, size_type Levels, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a4a9985c0e7c934e98e1ec2b7c80d0977"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00015.html" title="2d texture ">texture2d</a> and allocate a new storage_linear. <br /></td></tr>
<tr class="separator:a4a9985c0e7c934e98e1ec2b7c80d0977"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa815f652b4cf0a41ecd91efa6b074a3d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa815f652b4cf0a41ecd91efa6b074a3d"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00015.html#aa815f652b4cf0a41ecd91efa6b074a3d">texture2d</a> (<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, extent_type const &amp;Extent, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:aa815f652b4cf0a41ecd91efa6b074a3d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00015.html" title="2d texture ">texture2d</a> and allocate a new storage_linear with a complete mipmap chain. <br /></td></tr>
<tr class="separator:aa815f652b4cf0a41ecd91efa6b074a3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a747dba86c3a3a20270133755d012cd48"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a747dba86c3a3a20270133755d012cd48"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00015.html#a747dba86c3a3a20270133755d012cd48">texture2d</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture)</td></tr>
<tr class="memdesc:a747dba86c3a3a20270133755d012cd48"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00015.html" title="2d texture ">texture2d</a> view with an existing storage_linear. <br /></td></tr>
<tr class="separator:a747dba86c3a3a20270133755d012cd48"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaef1c237c9932cfbf6a94b270a2ebbda"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaef1c237c9932cfbf6a94b270a2ebbda"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00015.html#aaef1c237c9932cfbf6a94b270a2ebbda">texture2d</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, size_type BaseLayer, size_type MaxLayer, size_type BaseFace, size_type MaxFace, size_type BaseLevel, size_type MaxLevel, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:aaef1c237c9932cfbf6a94b270a2ebbda"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00015.html" title="2d texture ">texture2d</a> view with an existing storage_linear. <br /></td></tr>
<tr class="separator:aaef1c237c9932cfbf6a94b270a2ebbda"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9bfd372194039290b4628fd084b9d2f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9bfd372194039290b4628fd084b9d2f6"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00015.html#a9bfd372194039290b4628fd084b9d2f6">texture2d</a> (<a class="el" href="a00015.html">texture2d</a> const &amp;Texture, size_type BaseLevel, size_type MaxLevel)</td></tr>
<tr class="memdesc:a9bfd372194039290b4628fd084b9d2f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00015.html" title="2d texture ">texture2d</a> view, reference a subset of an existing <a class="el" href="a00015.html" title="2d texture ">texture2d</a> instance. <br /></td></tr>
<tr class="separator:a9bfd372194039290b4628fd084b9d2f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_a00012"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00012')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="a00012.html">texture</a></td></tr>
<tr class="memitem:ae7c1f35cf657c7bbe9eae2b39e44f728 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae7c1f35cf657c7bbe9eae2b39e44f728"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ae7c1f35cf657c7bbe9eae2b39e44f728">base_face</a> () const </td></tr>
<tr class="memdesc:ae7c1f35cf657c7bbe9eae2b39e44f728 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the base face of the texture instance, effectively a memory offset in the actual texture storage_type to identify where to start reading the faces. <br /></td></tr>
<tr class="separator:ae7c1f35cf657c7bbe9eae2b39e44f728 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1aeb020d8f82035e607b209c3841dee2 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1aeb020d8f82035e607b209c3841dee2"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a1aeb020d8f82035e607b209c3841dee2">base_layer</a> () const </td></tr>
<tr class="memdesc:a1aeb020d8f82035e607b209c3841dee2 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the base layer of the texture instance, effectively a memory offset in the actual texture storage_type to identify where to start reading the layers. <br /></td></tr>
<tr class="separator:a1aeb020d8f82035e607b209c3841dee2 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01c07293e367b293736943e92f6a9e98 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a01c07293e367b293736943e92f6a9e98"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a01c07293e367b293736943e92f6a9e98">base_level</a> () const </td></tr>
<tr class="memdesc:a01c07293e367b293736943e92f6a9e98 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the base level of the texture instance, effectively a memory offset in the actual texture storage_type to identify where to start reading the levels. <br /></td></tr>
<tr class="separator:a01c07293e367b293736943e92f6a9e98 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8bb3912a3ce86b15842e79d0b421204 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8bb3912a3ce86b15842e79d0b421204"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a> ()</td></tr>
<tr class="memdesc:ac8bb3912a3ce86b15842e79d0b421204 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the entire texture storage_linear with zeros. <br /></td></tr>
<tr class="separator:ac8bb3912a3ce86b15842e79d0b421204 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="memTemplParams" colspan="2">template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a5430e0073bc8a24264b7133f25f0edec">clear</a> (gen_type const &amp;Texel)</td></tr>
<tr class="memdesc:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the entire texture storage_linear with Texel which type must match the texture storage_linear format block size If the type of gen_type doesn't match the type of the texture format, no conversion is performed and the data will be reinterpreted as if is was of the texture format. <a href="#a5430e0073bc8a24264b7133f25f0edec">More...</a><br /></td></tr>
<tr class="separator:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a54710883dcdf8a8f8f9bfc13e9dd5398"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a54710883dcdf8a8f8f9bfc13e9dd5398">clear</a> (size_type Layer, size_type Face, size_type Level, gen_type const &amp;BlockData)</td></tr>
<tr class="memdesc:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear a specific image of a texture. <br /></td></tr>
<tr class="separator:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1df5aef4908916286c693427ae042eca"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a1df5aef4908916286c693427ae042eca">clear</a> (size_type Layer, size_type Face, size_type Level, extent_type const &amp;TexelOffset, extent_type const &amp;TexelExtent, gen_type const &amp;BlockData)</td></tr>
<tr class="memdesc:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear a subset of a specific image of a texture. <br /></td></tr>
<tr class="separator:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade92aae99ac3524a83809acdfd8c0715 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade92aae99ac3524a83809acdfd8c0715"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ade92aae99ac3524a83809acdfd8c0715">copy</a> (<a class="el" href="a00012.html">texture</a> const &amp;TextureSrc, size_t LayerSrc, size_t FaceSrc, size_t LevelSrc, size_t LayerDst, size_t FaceDst, size_t LevelDst)</td></tr>
<tr class="memdesc:ade92aae99ac3524a83809acdfd8c0715 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy a specific image of a texture. <br /></td></tr>
<tr class="separator:ade92aae99ac3524a83809acdfd8c0715 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace50b0c766f3c82847eda49459eec7e0 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ace50b0c766f3c82847eda49459eec7e0"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ace50b0c766f3c82847eda49459eec7e0">copy</a> (<a class="el" href="a00012.html">texture</a> const &amp;TextureSrc, size_t LayerSrc, size_t FaceSrc, size_t LevelSrc, extent_type const &amp;OffsetSrc, size_t LayerDst, size_t FaceDst, size_t LevelDst, extent_type const &amp;OffsetDst, extent_type const &amp;Extent)</td></tr>
<tr class="memdesc:ace50b0c766f3c82847eda49459eec7e0 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy a subset of a specific image of a texture. <br /></td></tr>
<tr class="separator:ace50b0c766f3c82847eda49459eec7e0 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f2c67dc864c6b6e705710853b5568ef inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f2c67dc864c6b6e705710853b5568ef"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a3f2c67dc864c6b6e705710853b5568ef">data</a> ()</td></tr>
<tr class="memdesc:a3f2c67dc864c6b6e705710853b5568ef inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:a3f2c67dc864c6b6e705710853b5568ef inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="aecfb33a652ea3f984735a031e4af697f"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#aecfb33a652ea3f984735a031e4af697f">data</a> ()</td></tr>
<tr class="memdesc:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec236abf7eac8ff4eec54eda033b9288 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec236abf7eac8ff4eec54eda033b9288"></a>
void const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aec236abf7eac8ff4eec54eda033b9288">data</a> () const </td></tr>
<tr class="memdesc:aec236abf7eac8ff4eec54eda033b9288 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:aec236abf7eac8ff4eec54eda033b9288 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8c538fecdc895b20bbd61890bffe0fdb"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type const *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a8c538fecdc895b20bbd61890bffe0fdb">data</a> () const </td></tr>
<tr class="memdesc:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76d02b884284dee754400f17bb7f5053 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a76d02b884284dee754400f17bb7f5053"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a76d02b884284dee754400f17bb7f5053">data</a> (size_type Layer, size_type Face, size_type Level)</td></tr>
<tr class="memdesc:a76d02b884284dee754400f17bb7f5053 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:a76d02b884284dee754400f17bb7f5053 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad0d21d1d0e5888e0d546dc585d30249 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad0d21d1d0e5888e0d546dc585d30249"></a>
void const *const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aad0d21d1d0e5888e0d546dc585d30249">data</a> (size_type Layer, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:aad0d21d1d0e5888e0d546dc585d30249 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:aad0d21d1d0e5888e0d546dc585d30249 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a42214ff33bec0fa5dd52c2b0df7dcdbe"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a42214ff33bec0fa5dd52c2b0df7dcdbe">data</a> (size_type Layer, size_type Face, size_type Level)</td></tr>
<tr class="memdesc:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a272d7f02634851f003d81a25407ba782"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type const *const&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a272d7f02634851f003d81a25407ba782">data</a> (size_type Layer, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6e61de369e994009e36f344f99c15ad inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac6e61de369e994009e36f344f99c15ad"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ac6e61de369e994009e36f344f99c15ad">empty</a> () const </td></tr>
<tr class="memdesc:ac6e61de369e994009e36f344f99c15ad inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return whether the texture instance is empty, no storage_type or description have been assigned to the instance. <br /></td></tr>
<tr class="separator:ac6e61de369e994009e36f344f99c15ad inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9122bf87edd23bd731bd9eaf072e757 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9122bf87edd23bd731bd9eaf072e757"></a>
extent_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aa9122bf87edd23bd731bd9eaf072e757">extent</a> (size_type Level=0) const </td></tr>
<tr class="memdesc:aa9122bf87edd23bd731bd9eaf072e757 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the size of a texture instance: width, height and depth. <br /></td></tr>
<tr class="separator:aa9122bf87edd23bd731bd9eaf072e757 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3914cdf138e9267662ac7147fe71d644 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3914cdf138e9267662ac7147fe71d644"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a3914cdf138e9267662ac7147fe71d644">faces</a> () const </td></tr>
<tr class="memdesc:a3914cdf138e9267662ac7147fe71d644 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <a class="el" href="a00012.html#aa18daf8e8534d4cefabf3b7dfd43a6f3" title="Return the max face of the texture instance, effectively a memory offset to the beginning of the last...">max_face()</a> - <a class="el" href="a00012.html#ae7c1f35cf657c7bbe9eae2b39e44f728" title="Return the base face of the texture instance, effectively a memory offset in the actual texture stora...">base_face()</a> + 1. <br /></td></tr>
<tr class="separator:a3914cdf138e9267662ac7147fe71d644 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad94928ca00873970455c1fb2d3c03fd8 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad94928ca00873970455c1fb2d3c03fd8"></a>
<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ad94928ca00873970455c1fb2d3c03fd8">format</a> () const </td></tr>
<tr class="memdesc:ad94928ca00873970455c1fb2d3c03fd8 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the texture instance format. <br /></td></tr>
<tr class="separator:ad94928ca00873970455c1fb2d3c03fd8 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac4e6a627c907856620b7eb161c9b85d inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac4e6a627c907856620b7eb161c9b85d"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aac4e6a627c907856620b7eb161c9b85d">layers</a> () const </td></tr>
<tr class="memdesc:aac4e6a627c907856620b7eb161c9b85d inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <a class="el" href="a00012.html#af8ae0072dcfb583fcd278650b3f55ec6" title="Return the max layer of the texture instance, effectively a memory offset to the beginning of the las...">max_layer()</a> - <a class="el" href="a00012.html#a1aeb020d8f82035e607b209c3841dee2" title="Return the base layer of the texture instance, effectively a memory offset in the actual texture stor...">base_layer()</a> + 1. <br /></td></tr>
<tr class="separator:aac4e6a627c907856620b7eb161c9b85d inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b85eb415046f5a31b2d9eff8cefc24c inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9b85eb415046f5a31b2d9eff8cefc24c"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a9b85eb415046f5a31b2d9eff8cefc24c">levels</a> () const </td></tr>
<tr class="memdesc:a9b85eb415046f5a31b2d9eff8cefc24c inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <a class="el" href="a00012.html#ae174e356683cee9bf9d3e11df4d6f78a" title="Return the max level of the texture instance, effectively a memory offset to the beginning of the las...">max_level()</a> - <a class="el" href="a00012.html#a01c07293e367b293736943e92f6a9e98" title="Return the base level of the texture instance, effectively a memory offset in the actual texture stor...">base_level()</a> + 1. <br /></td></tr>
<tr class="separator:a9b85eb415046f5a31b2d9eff8cefc24c inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a643d8893b84d50b7a3c7fc53b218da8a"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a643d8893b84d50b7a3c7fc53b218da8a">load</a> (extent_type const &amp;TexelCoord, size_type Layer, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch a texel from a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa18daf8e8534d4cefabf3b7dfd43a6f3 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa18daf8e8534d4cefabf3b7dfd43a6f3"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aa18daf8e8534d4cefabf3b7dfd43a6f3">max_face</a> () const </td></tr>
<tr class="memdesc:aa18daf8e8534d4cefabf3b7dfd43a6f3 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the max face of the texture instance, effectively a memory offset to the beginning of the last face in the actual texture storage_type that the texture instance can access. <br /></td></tr>
<tr class="separator:aa18daf8e8534d4cefabf3b7dfd43a6f3 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8ae0072dcfb583fcd278650b3f55ec6 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8ae0072dcfb583fcd278650b3f55ec6"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#af8ae0072dcfb583fcd278650b3f55ec6">max_layer</a> () const </td></tr>
<tr class="memdesc:af8ae0072dcfb583fcd278650b3f55ec6 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the max layer of the texture instance, effectively a memory offset to the beginning of the last layer in the actual texture storage_type that the texture instance can access. <br /></td></tr>
<tr class="separator:af8ae0072dcfb583fcd278650b3f55ec6 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae174e356683cee9bf9d3e11df4d6f78a inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae174e356683cee9bf9d3e11df4d6f78a"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ae174e356683cee9bf9d3e11df4d6f78a">max_level</a> () const </td></tr>
<tr class="memdesc:ae174e356683cee9bf9d3e11df4d6f78a inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the max level of the texture instance, effectively a memory offset to the beginning of the last level in the actual texture storage_type that the texture instance can access. <br /></td></tr>
<tr class="separator:ae174e356683cee9bf9d3e11df4d6f78a inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a503ab01f6c0142145d3434f6924714e7 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a503ab01f6c0142145d3434f6924714e7"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a503ab01f6c0142145d3434f6924714e7">size</a> () const </td></tr>
<tr class="memdesc:a503ab01f6c0142145d3434f6924714e7 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the memory size of a texture instance storage_type in bytes. <br /></td></tr>
<tr class="separator:a503ab01f6c0142145d3434f6924714e7 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="memTemplParams" colspan="2">template&lt;typename genType &gt; </td></tr>
<tr class="memitem:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">size_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a24789b8cce4dcbe8e0d3a47b68447aba">size</a> () const </td></tr>
<tr class="memdesc:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the number of blocks contained in a texture instance storage_type. <a href="#a24789b8cce4dcbe8e0d3a47b68447aba">More...</a><br /></td></tr>
<tr class="separator:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46f11d7b73797c3e4b9a6da00f505fd8 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46f11d7b73797c3e4b9a6da00f505fd8"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a46f11d7b73797c3e4b9a6da00f505fd8">size</a> (size_type Level) const </td></tr>
<tr class="memdesc:a46f11d7b73797c3e4b9a6da00f505fd8 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the memory size of a specific level identified by Level. <br /></td></tr>
<tr class="separator:a46f11d7b73797c3e4b9a6da00f505fd8 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="memTemplParams" colspan="2">template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">size_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a665df3b51266310cd164cd5aa9c6e80e">size</a> (size_type Level) const </td></tr>
<tr class="memdesc:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the memory size of a specific level identified by Level. <a href="#a665df3b51266310cd164cd5aa9c6e80e">More...</a><br /></td></tr>
<tr class="separator:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a290419a437522cfe1981880fbfd9f810"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a290419a437522cfe1981880fbfd9f810">store</a> (extent_type const &amp;TexelCoord, size_type Layer, size_type Face, size_type Level, gen_type const &amp;Texel)</td></tr>
<tr class="memdesc:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a texel to a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="aa2c92d09106b13d3d20dd0909ada8a68"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#aa2c92d09106b13d3d20dd0909ada8a68">swizzle</a> (gli::swizzles const &amp;Swizzles)</td></tr>
<tr class="memdesc:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reorder the component in texture memory. <br /></td></tr>
<tr class="separator:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59d3d7946e94bc294444c5f55db70c21 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59d3d7946e94bc294444c5f55db70c21"></a>
<a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a59d3d7946e94bc294444c5f55db70c21">target</a> () const </td></tr>
<tr class="memdesc:a59d3d7946e94bc294444c5f55db70c21 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the target of a texture instance. <br /></td></tr>
<tr class="separator:a59d3d7946e94bc294444c5f55db70c21 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9921e1ac4df78bce54d328affd59da28 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9921e1ac4df78bce54d328affd59da28"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a9921e1ac4df78bce54d328affd59da28">texture</a> ()</td></tr>
<tr class="memdesc:a9921e1ac4df78bce54d328affd59da28 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an empty texture instance. <br /></td></tr>
<tr class="separator:a9921e1ac4df78bce54d328affd59da28 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ca26840db935a649290350da2b5f5ca inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a4ca26840db935a649290350da2b5f5ca">texture</a> (<a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a> Target, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, extent_type const &amp;Extent, size_type Layers, size_type Faces, size_type Levels, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a4ca26840db935a649290350da2b5f5ca inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture object and allocate a texture storage for it. <a href="#a4ca26840db935a649290350da2b5f5ca">More...</a><br /></td></tr>
<tr class="separator:a4ca26840db935a649290350da2b5f5ca inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9bbe0e3db3a8e9b7878acf20bc9f4c81 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a9bbe0e3db3a8e9b7878acf20bc9f4c81">texture</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture, <a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a> Target, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, size_type BaseLayer, size_type MaxLayer, size_type BaseFace, size_type MaxFace, size_type BaseLevel, size_type MaxLevel, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a9bbe0e3db3a8e9b7878acf20bc9f4c81 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture object by sharing an existing texture storage_type from another texture instance. <a href="#a9bbe0e3db3a8e9b7878acf20bc9f4c81">More...</a><br /></td></tr>
<tr class="separator:a9bbe0e3db3a8e9b7878acf20bc9f4c81 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3efa6c67e681cdb4630d99cbb355aa3d inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a3efa6c67e681cdb4630d99cbb355aa3d">texture</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture, <a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a> Target, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a3efa6c67e681cdb4630d99cbb355aa3d inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture object by sharing an existing texture storage_type from another texture instance. <a href="#a3efa6c67e681cdb4630d99cbb355aa3d">More...</a><br /></td></tr>
<tr class="separator:a3efa6c67e681cdb4630d99cbb355aa3d inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>2d texture </p>
<p>Definition at line <a class="el" href="a00065_source.html#l00012">12</a> of file <a class="el" href="a00065_source.html">texture2d.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 368 B

View File

@ -1,326 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: texture2d_array Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="a00074.html">gli</a></li><li class="navelem"><a class="el" href="a00016.html">texture2d_array</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="a00094.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">texture2d_array Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>2d array texture
<a href="a00016.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for texture2d_array:</div>
<div class="dyncontent">
<div class="center">
<img src="a00016.png" usemap="#texture2d_array_map" alt=""/>
<map id="texture2d_array_map" name="texture2d_array_map">
<area href="a00012.html" title="Genetic texture class. It can support any target. " alt="texture" shape="rect" coords="0,0,102,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aa9122bf87edd23bd731bd9eaf072e757"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9122bf87edd23bd731bd9eaf072e757"></a>
extent_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00016.html#aa9122bf87edd23bd731bd9eaf072e757">extent</a> (size_type Level=0) const </td></tr>
<tr class="memdesc:aa9122bf87edd23bd731bd9eaf072e757"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the dimensions of a texture instance: width and height. <br /></td></tr>
<tr class="separator:aa9122bf87edd23bd731bd9eaf072e757"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27ef7ed3e610ae892d7b3466955f06d4"><td class="memTemplParams" colspan="2"><a class="anchor" id="a27ef7ed3e610ae892d7b3466955f06d4"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a27ef7ed3e610ae892d7b3466955f06d4"><td class="memTemplItemLeft" align="right" valign="top">gen_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00016.html#a27ef7ed3e610ae892d7b3466955f06d4">load</a> (extent_type const &amp;TexelCoord, size_type Layer, size_type Level) const </td></tr>
<tr class="memdesc:a27ef7ed3e610ae892d7b3466955f06d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch a texel from a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a27ef7ed3e610ae892d7b3466955f06d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b937706c7588c2afa9534fe2f723912"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b937706c7588c2afa9534fe2f723912"></a>
<a class="el" href="a00015.html">texture2d</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00016.html#a7b937706c7588c2afa9534fe2f723912">operator[]</a> (size_type Layer) const </td></tr>
<tr class="memdesc:a7b937706c7588c2afa9534fe2f723912"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a view of the texture identified by Layer in the texture array. <br /></td></tr>
<tr class="separator:a7b937706c7588c2afa9534fe2f723912"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe87e955daebade5b96163121013195d"><td class="memTemplParams" colspan="2"><a class="anchor" id="afe87e955daebade5b96163121013195d"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:afe87e955daebade5b96163121013195d"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00016.html#afe87e955daebade5b96163121013195d">store</a> (extent_type const &amp;TexelCoord, size_type Layer, size_type Level, gen_type const &amp;Texel)</td></tr>
<tr class="memdesc:afe87e955daebade5b96163121013195d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a texel to a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:afe87e955daebade5b96163121013195d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4855111e2bedbae286805799affaeb73"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4855111e2bedbae286805799affaeb73"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00016.html#a4855111e2bedbae286805799affaeb73">texture2d_array</a> ()</td></tr>
<tr class="memdesc:a4855111e2bedbae286805799affaeb73"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an empty texture 2D array. <br /></td></tr>
<tr class="separator:a4855111e2bedbae286805799affaeb73"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a868a60615a76054c283ac95db48b9bc7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a868a60615a76054c283ac95db48b9bc7"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00016.html#a868a60615a76054c283ac95db48b9bc7">texture2d_array</a> (<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, extent_type const &amp;Extent, size_type Layers, size_type Levels, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a868a60615a76054c283ac95db48b9bc7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00016.html" title="2d array texture ">texture2d_array</a> and allocate a new storage_linear. <br /></td></tr>
<tr class="separator:a868a60615a76054c283ac95db48b9bc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8859d094d2e593dd22d375a193a42281"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8859d094d2e593dd22d375a193a42281"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00016.html#a8859d094d2e593dd22d375a193a42281">texture2d_array</a> (<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, extent_type const &amp;Extent, size_type Layers, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a8859d094d2e593dd22d375a193a42281"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00016.html" title="2d array texture ">texture2d_array</a> and allocate a new storage_linear with a complete mipmap chain. <br /></td></tr>
<tr class="separator:a8859d094d2e593dd22d375a193a42281"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1be2599d32b422cb276189694ee13081"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1be2599d32b422cb276189694ee13081"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00016.html#a1be2599d32b422cb276189694ee13081">texture2d_array</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture)</td></tr>
<tr class="memdesc:a1be2599d32b422cb276189694ee13081"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00016.html" title="2d array texture ">texture2d_array</a> view with an existing storage_linear. <br /></td></tr>
<tr class="separator:a1be2599d32b422cb276189694ee13081"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68382c688b06047e4eba796475510f03"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a68382c688b06047e4eba796475510f03"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00016.html#a68382c688b06047e4eba796475510f03">texture2d_array</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, size_type BaseLayer, size_type MaxLayer, size_type BaseFace, size_type MaxFace, size_type BaseLevel, size_type MaxLevel, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a68382c688b06047e4eba796475510f03"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00016.html" title="2d array texture ">texture2d_array</a> view with an existing storage_linear. <br /></td></tr>
<tr class="separator:a68382c688b06047e4eba796475510f03"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e32a31975d1a89bfa72836230518294"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8e32a31975d1a89bfa72836230518294"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00016.html#a8e32a31975d1a89bfa72836230518294">texture2d_array</a> (<a class="el" href="a00016.html">texture2d_array</a> const &amp;Texture, size_type BaseLayer, size_type MaxLayer, size_type BaseLevel, size_type MaxLevel)</td></tr>
<tr class="memdesc:a8e32a31975d1a89bfa72836230518294"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture view, reference a subset of an exiting <a class="el" href="a00016.html" title="2d array texture ">texture2d_array</a> instance. <br /></td></tr>
<tr class="separator:a8e32a31975d1a89bfa72836230518294"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_a00012"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00012')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="a00012.html">texture</a></td></tr>
<tr class="memitem:ae7c1f35cf657c7bbe9eae2b39e44f728 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae7c1f35cf657c7bbe9eae2b39e44f728"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ae7c1f35cf657c7bbe9eae2b39e44f728">base_face</a> () const </td></tr>
<tr class="memdesc:ae7c1f35cf657c7bbe9eae2b39e44f728 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the base face of the texture instance, effectively a memory offset in the actual texture storage_type to identify where to start reading the faces. <br /></td></tr>
<tr class="separator:ae7c1f35cf657c7bbe9eae2b39e44f728 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1aeb020d8f82035e607b209c3841dee2 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1aeb020d8f82035e607b209c3841dee2"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a1aeb020d8f82035e607b209c3841dee2">base_layer</a> () const </td></tr>
<tr class="memdesc:a1aeb020d8f82035e607b209c3841dee2 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the base layer of the texture instance, effectively a memory offset in the actual texture storage_type to identify where to start reading the layers. <br /></td></tr>
<tr class="separator:a1aeb020d8f82035e607b209c3841dee2 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01c07293e367b293736943e92f6a9e98 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a01c07293e367b293736943e92f6a9e98"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a01c07293e367b293736943e92f6a9e98">base_level</a> () const </td></tr>
<tr class="memdesc:a01c07293e367b293736943e92f6a9e98 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the base level of the texture instance, effectively a memory offset in the actual texture storage_type to identify where to start reading the levels. <br /></td></tr>
<tr class="separator:a01c07293e367b293736943e92f6a9e98 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8bb3912a3ce86b15842e79d0b421204 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8bb3912a3ce86b15842e79d0b421204"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a> ()</td></tr>
<tr class="memdesc:ac8bb3912a3ce86b15842e79d0b421204 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the entire texture storage_linear with zeros. <br /></td></tr>
<tr class="separator:ac8bb3912a3ce86b15842e79d0b421204 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="memTemplParams" colspan="2">template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a5430e0073bc8a24264b7133f25f0edec">clear</a> (gen_type const &amp;Texel)</td></tr>
<tr class="memdesc:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the entire texture storage_linear with Texel which type must match the texture storage_linear format block size If the type of gen_type doesn't match the type of the texture format, no conversion is performed and the data will be reinterpreted as if is was of the texture format. <a href="#a5430e0073bc8a24264b7133f25f0edec">More...</a><br /></td></tr>
<tr class="separator:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a54710883dcdf8a8f8f9bfc13e9dd5398"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a54710883dcdf8a8f8f9bfc13e9dd5398">clear</a> (size_type Layer, size_type Face, size_type Level, gen_type const &amp;BlockData)</td></tr>
<tr class="memdesc:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear a specific image of a texture. <br /></td></tr>
<tr class="separator:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1df5aef4908916286c693427ae042eca"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a1df5aef4908916286c693427ae042eca">clear</a> (size_type Layer, size_type Face, size_type Level, extent_type const &amp;TexelOffset, extent_type const &amp;TexelExtent, gen_type const &amp;BlockData)</td></tr>
<tr class="memdesc:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear a subset of a specific image of a texture. <br /></td></tr>
<tr class="separator:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade92aae99ac3524a83809acdfd8c0715 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade92aae99ac3524a83809acdfd8c0715"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ade92aae99ac3524a83809acdfd8c0715">copy</a> (<a class="el" href="a00012.html">texture</a> const &amp;TextureSrc, size_t LayerSrc, size_t FaceSrc, size_t LevelSrc, size_t LayerDst, size_t FaceDst, size_t LevelDst)</td></tr>
<tr class="memdesc:ade92aae99ac3524a83809acdfd8c0715 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy a specific image of a texture. <br /></td></tr>
<tr class="separator:ade92aae99ac3524a83809acdfd8c0715 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace50b0c766f3c82847eda49459eec7e0 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ace50b0c766f3c82847eda49459eec7e0"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ace50b0c766f3c82847eda49459eec7e0">copy</a> (<a class="el" href="a00012.html">texture</a> const &amp;TextureSrc, size_t LayerSrc, size_t FaceSrc, size_t LevelSrc, extent_type const &amp;OffsetSrc, size_t LayerDst, size_t FaceDst, size_t LevelDst, extent_type const &amp;OffsetDst, extent_type const &amp;Extent)</td></tr>
<tr class="memdesc:ace50b0c766f3c82847eda49459eec7e0 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy a subset of a specific image of a texture. <br /></td></tr>
<tr class="separator:ace50b0c766f3c82847eda49459eec7e0 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f2c67dc864c6b6e705710853b5568ef inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f2c67dc864c6b6e705710853b5568ef"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a3f2c67dc864c6b6e705710853b5568ef">data</a> ()</td></tr>
<tr class="memdesc:a3f2c67dc864c6b6e705710853b5568ef inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:a3f2c67dc864c6b6e705710853b5568ef inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="aecfb33a652ea3f984735a031e4af697f"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#aecfb33a652ea3f984735a031e4af697f">data</a> ()</td></tr>
<tr class="memdesc:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec236abf7eac8ff4eec54eda033b9288 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec236abf7eac8ff4eec54eda033b9288"></a>
void const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aec236abf7eac8ff4eec54eda033b9288">data</a> () const </td></tr>
<tr class="memdesc:aec236abf7eac8ff4eec54eda033b9288 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:aec236abf7eac8ff4eec54eda033b9288 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8c538fecdc895b20bbd61890bffe0fdb"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type const *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a8c538fecdc895b20bbd61890bffe0fdb">data</a> () const </td></tr>
<tr class="memdesc:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76d02b884284dee754400f17bb7f5053 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a76d02b884284dee754400f17bb7f5053"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a76d02b884284dee754400f17bb7f5053">data</a> (size_type Layer, size_type Face, size_type Level)</td></tr>
<tr class="memdesc:a76d02b884284dee754400f17bb7f5053 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:a76d02b884284dee754400f17bb7f5053 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad0d21d1d0e5888e0d546dc585d30249 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad0d21d1d0e5888e0d546dc585d30249"></a>
void const *const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aad0d21d1d0e5888e0d546dc585d30249">data</a> (size_type Layer, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:aad0d21d1d0e5888e0d546dc585d30249 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:aad0d21d1d0e5888e0d546dc585d30249 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a42214ff33bec0fa5dd52c2b0df7dcdbe"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a42214ff33bec0fa5dd52c2b0df7dcdbe">data</a> (size_type Layer, size_type Face, size_type Level)</td></tr>
<tr class="memdesc:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a272d7f02634851f003d81a25407ba782"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type const *const&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a272d7f02634851f003d81a25407ba782">data</a> (size_type Layer, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6e61de369e994009e36f344f99c15ad inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac6e61de369e994009e36f344f99c15ad"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ac6e61de369e994009e36f344f99c15ad">empty</a> () const </td></tr>
<tr class="memdesc:ac6e61de369e994009e36f344f99c15ad inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return whether the texture instance is empty, no storage_type or description have been assigned to the instance. <br /></td></tr>
<tr class="separator:ac6e61de369e994009e36f344f99c15ad inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9122bf87edd23bd731bd9eaf072e757 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9122bf87edd23bd731bd9eaf072e757"></a>
extent_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aa9122bf87edd23bd731bd9eaf072e757">extent</a> (size_type Level=0) const </td></tr>
<tr class="memdesc:aa9122bf87edd23bd731bd9eaf072e757 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the size of a texture instance: width, height and depth. <br /></td></tr>
<tr class="separator:aa9122bf87edd23bd731bd9eaf072e757 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3914cdf138e9267662ac7147fe71d644 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3914cdf138e9267662ac7147fe71d644"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a3914cdf138e9267662ac7147fe71d644">faces</a> () const </td></tr>
<tr class="memdesc:a3914cdf138e9267662ac7147fe71d644 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <a class="el" href="a00012.html#aa18daf8e8534d4cefabf3b7dfd43a6f3" title="Return the max face of the texture instance, effectively a memory offset to the beginning of the last...">max_face()</a> - <a class="el" href="a00012.html#ae7c1f35cf657c7bbe9eae2b39e44f728" title="Return the base face of the texture instance, effectively a memory offset in the actual texture stora...">base_face()</a> + 1. <br /></td></tr>
<tr class="separator:a3914cdf138e9267662ac7147fe71d644 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad94928ca00873970455c1fb2d3c03fd8 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad94928ca00873970455c1fb2d3c03fd8"></a>
<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ad94928ca00873970455c1fb2d3c03fd8">format</a> () const </td></tr>
<tr class="memdesc:ad94928ca00873970455c1fb2d3c03fd8 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the texture instance format. <br /></td></tr>
<tr class="separator:ad94928ca00873970455c1fb2d3c03fd8 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac4e6a627c907856620b7eb161c9b85d inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac4e6a627c907856620b7eb161c9b85d"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aac4e6a627c907856620b7eb161c9b85d">layers</a> () const </td></tr>
<tr class="memdesc:aac4e6a627c907856620b7eb161c9b85d inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <a class="el" href="a00012.html#af8ae0072dcfb583fcd278650b3f55ec6" title="Return the max layer of the texture instance, effectively a memory offset to the beginning of the las...">max_layer()</a> - <a class="el" href="a00012.html#a1aeb020d8f82035e607b209c3841dee2" title="Return the base layer of the texture instance, effectively a memory offset in the actual texture stor...">base_layer()</a> + 1. <br /></td></tr>
<tr class="separator:aac4e6a627c907856620b7eb161c9b85d inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b85eb415046f5a31b2d9eff8cefc24c inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9b85eb415046f5a31b2d9eff8cefc24c"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a9b85eb415046f5a31b2d9eff8cefc24c">levels</a> () const </td></tr>
<tr class="memdesc:a9b85eb415046f5a31b2d9eff8cefc24c inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <a class="el" href="a00012.html#ae174e356683cee9bf9d3e11df4d6f78a" title="Return the max level of the texture instance, effectively a memory offset to the beginning of the las...">max_level()</a> - <a class="el" href="a00012.html#a01c07293e367b293736943e92f6a9e98" title="Return the base level of the texture instance, effectively a memory offset in the actual texture stor...">base_level()</a> + 1. <br /></td></tr>
<tr class="separator:a9b85eb415046f5a31b2d9eff8cefc24c inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a643d8893b84d50b7a3c7fc53b218da8a"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a643d8893b84d50b7a3c7fc53b218da8a">load</a> (extent_type const &amp;TexelCoord, size_type Layer, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch a texel from a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa18daf8e8534d4cefabf3b7dfd43a6f3 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa18daf8e8534d4cefabf3b7dfd43a6f3"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aa18daf8e8534d4cefabf3b7dfd43a6f3">max_face</a> () const </td></tr>
<tr class="memdesc:aa18daf8e8534d4cefabf3b7dfd43a6f3 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the max face of the texture instance, effectively a memory offset to the beginning of the last face in the actual texture storage_type that the texture instance can access. <br /></td></tr>
<tr class="separator:aa18daf8e8534d4cefabf3b7dfd43a6f3 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8ae0072dcfb583fcd278650b3f55ec6 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8ae0072dcfb583fcd278650b3f55ec6"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#af8ae0072dcfb583fcd278650b3f55ec6">max_layer</a> () const </td></tr>
<tr class="memdesc:af8ae0072dcfb583fcd278650b3f55ec6 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the max layer of the texture instance, effectively a memory offset to the beginning of the last layer in the actual texture storage_type that the texture instance can access. <br /></td></tr>
<tr class="separator:af8ae0072dcfb583fcd278650b3f55ec6 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae174e356683cee9bf9d3e11df4d6f78a inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae174e356683cee9bf9d3e11df4d6f78a"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ae174e356683cee9bf9d3e11df4d6f78a">max_level</a> () const </td></tr>
<tr class="memdesc:ae174e356683cee9bf9d3e11df4d6f78a inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the max level of the texture instance, effectively a memory offset to the beginning of the last level in the actual texture storage_type that the texture instance can access. <br /></td></tr>
<tr class="separator:ae174e356683cee9bf9d3e11df4d6f78a inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a503ab01f6c0142145d3434f6924714e7 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a503ab01f6c0142145d3434f6924714e7"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a503ab01f6c0142145d3434f6924714e7">size</a> () const </td></tr>
<tr class="memdesc:a503ab01f6c0142145d3434f6924714e7 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the memory size of a texture instance storage_type in bytes. <br /></td></tr>
<tr class="separator:a503ab01f6c0142145d3434f6924714e7 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="memTemplParams" colspan="2">template&lt;typename genType &gt; </td></tr>
<tr class="memitem:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">size_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a24789b8cce4dcbe8e0d3a47b68447aba">size</a> () const </td></tr>
<tr class="memdesc:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the number of blocks contained in a texture instance storage_type. <a href="#a24789b8cce4dcbe8e0d3a47b68447aba">More...</a><br /></td></tr>
<tr class="separator:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46f11d7b73797c3e4b9a6da00f505fd8 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46f11d7b73797c3e4b9a6da00f505fd8"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a46f11d7b73797c3e4b9a6da00f505fd8">size</a> (size_type Level) const </td></tr>
<tr class="memdesc:a46f11d7b73797c3e4b9a6da00f505fd8 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the memory size of a specific level identified by Level. <br /></td></tr>
<tr class="separator:a46f11d7b73797c3e4b9a6da00f505fd8 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="memTemplParams" colspan="2">template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">size_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a665df3b51266310cd164cd5aa9c6e80e">size</a> (size_type Level) const </td></tr>
<tr class="memdesc:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the memory size of a specific level identified by Level. <a href="#a665df3b51266310cd164cd5aa9c6e80e">More...</a><br /></td></tr>
<tr class="separator:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a290419a437522cfe1981880fbfd9f810"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a290419a437522cfe1981880fbfd9f810">store</a> (extent_type const &amp;TexelCoord, size_type Layer, size_type Face, size_type Level, gen_type const &amp;Texel)</td></tr>
<tr class="memdesc:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a texel to a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="aa2c92d09106b13d3d20dd0909ada8a68"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#aa2c92d09106b13d3d20dd0909ada8a68">swizzle</a> (gli::swizzles const &amp;Swizzles)</td></tr>
<tr class="memdesc:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reorder the component in texture memory. <br /></td></tr>
<tr class="separator:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59d3d7946e94bc294444c5f55db70c21 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59d3d7946e94bc294444c5f55db70c21"></a>
<a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a59d3d7946e94bc294444c5f55db70c21">target</a> () const </td></tr>
<tr class="memdesc:a59d3d7946e94bc294444c5f55db70c21 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the target of a texture instance. <br /></td></tr>
<tr class="separator:a59d3d7946e94bc294444c5f55db70c21 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9921e1ac4df78bce54d328affd59da28 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9921e1ac4df78bce54d328affd59da28"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a9921e1ac4df78bce54d328affd59da28">texture</a> ()</td></tr>
<tr class="memdesc:a9921e1ac4df78bce54d328affd59da28 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an empty texture instance. <br /></td></tr>
<tr class="separator:a9921e1ac4df78bce54d328affd59da28 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ca26840db935a649290350da2b5f5ca inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a4ca26840db935a649290350da2b5f5ca">texture</a> (<a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a> Target, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, extent_type const &amp;Extent, size_type Layers, size_type Faces, size_type Levels, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a4ca26840db935a649290350da2b5f5ca inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture object and allocate a texture storage for it. <a href="#a4ca26840db935a649290350da2b5f5ca">More...</a><br /></td></tr>
<tr class="separator:a4ca26840db935a649290350da2b5f5ca inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9bbe0e3db3a8e9b7878acf20bc9f4c81 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a9bbe0e3db3a8e9b7878acf20bc9f4c81">texture</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture, <a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a> Target, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, size_type BaseLayer, size_type MaxLayer, size_type BaseFace, size_type MaxFace, size_type BaseLevel, size_type MaxLevel, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a9bbe0e3db3a8e9b7878acf20bc9f4c81 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture object by sharing an existing texture storage_type from another texture instance. <a href="#a9bbe0e3db3a8e9b7878acf20bc9f4c81">More...</a><br /></td></tr>
<tr class="separator:a9bbe0e3db3a8e9b7878acf20bc9f4c81 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3efa6c67e681cdb4630d99cbb355aa3d inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a3efa6c67e681cdb4630d99cbb355aa3d">texture</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture, <a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a> Target, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a3efa6c67e681cdb4630d99cbb355aa3d inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture object by sharing an existing texture storage_type from another texture instance. <a href="#a3efa6c67e681cdb4630d99cbb355aa3d">More...</a><br /></td></tr>
<tr class="separator:a3efa6c67e681cdb4630d99cbb355aa3d inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>2d array texture </p>
<p>Definition at line <a class="el" href="a00066_source.html#l00011">11</a> of file <a class="el" href="a00066_source.html">texture2d_array.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 482 B

View File

@ -1,326 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: texture3d Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="a00074.html">gli</a></li><li class="navelem"><a class="el" href="a00017.html">texture3d</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="a00095.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">texture3d Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>3d texture
<a href="a00017.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for texture3d:</div>
<div class="dyncontent">
<div class="center">
<img src="a00017.png" usemap="#texture3d_map" alt=""/>
<map id="texture3d_map" name="texture3d_map">
<area href="a00012.html" title="Genetic texture class. It can support any target. " alt="texture" shape="rect" coords="0,0,64,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aa9122bf87edd23bd731bd9eaf072e757"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9122bf87edd23bd731bd9eaf072e757"></a>
extent_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#aa9122bf87edd23bd731bd9eaf072e757">extent</a> (size_type Level=0) const </td></tr>
<tr class="memdesc:aa9122bf87edd23bd731bd9eaf072e757"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the dimensions of a texture instance: width, height and depth. <br /></td></tr>
<tr class="separator:aa9122bf87edd23bd731bd9eaf072e757"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91093dbf82799b0838fe1828cdfe05eb"><td class="memTemplParams" colspan="2"><a class="anchor" id="a91093dbf82799b0838fe1828cdfe05eb"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a91093dbf82799b0838fe1828cdfe05eb"><td class="memTemplItemLeft" align="right" valign="top">gen_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00017.html#a91093dbf82799b0838fe1828cdfe05eb">load</a> (extent_type const &amp;TexelCoord, size_type Level) const </td></tr>
<tr class="memdesc:a91093dbf82799b0838fe1828cdfe05eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch a texel from a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a91093dbf82799b0838fe1828cdfe05eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af56d4d7adaa673dfb24e406acbf362cc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af56d4d7adaa673dfb24e406acbf362cc"></a>
<a class="el" href="a00003.html">image</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#af56d4d7adaa673dfb24e406acbf362cc">operator[]</a> (size_type Level) const </td></tr>
<tr class="memdesc:af56d4d7adaa673dfb24e406acbf362cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a view of the image identified by Level in the mipmap chain of the texture. <br /></td></tr>
<tr class="separator:af56d4d7adaa673dfb24e406acbf362cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a50cbe79dfa186affb1811e96c73a95"><td class="memTemplParams" colspan="2"><a class="anchor" id="a9a50cbe79dfa186affb1811e96c73a95"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a9a50cbe79dfa186affb1811e96c73a95"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00017.html#a9a50cbe79dfa186affb1811e96c73a95">store</a> (extent_type const &amp;TexelCoord, size_type Level, gen_type const &amp;Texel)</td></tr>
<tr class="memdesc:a9a50cbe79dfa186affb1811e96c73a95"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a texel to a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a9a50cbe79dfa186affb1811e96c73a95"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a674805423bd5cc6a3c767b4c33eeeb9f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a674805423bd5cc6a3c767b4c33eeeb9f"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#a674805423bd5cc6a3c767b4c33eeeb9f">texture3d</a> ()</td></tr>
<tr class="memdesc:a674805423bd5cc6a3c767b4c33eeeb9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an empty texture 3D. <br /></td></tr>
<tr class="separator:a674805423bd5cc6a3c767b4c33eeeb9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f151e7060e3ad9f4c29398dc502b6dc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f151e7060e3ad9f4c29398dc502b6dc"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#a7f151e7060e3ad9f4c29398dc502b6dc">texture3d</a> (<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, extent_type const &amp;Extent, size_type Levels, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a7f151e7060e3ad9f4c29398dc502b6dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00017.html" title="3d texture ">texture3d</a> and allocate a new storage_linear. <br /></td></tr>
<tr class="separator:a7f151e7060e3ad9f4c29398dc502b6dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad454b79aa66ce12e9cde041c4e1eab20"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad454b79aa66ce12e9cde041c4e1eab20"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#ad454b79aa66ce12e9cde041c4e1eab20">texture3d</a> (<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, extent_type const &amp;Extent, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:ad454b79aa66ce12e9cde041c4e1eab20"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00017.html" title="3d texture ">texture3d</a> and allocate a new storage_linear with a complete mipmap chain. <br /></td></tr>
<tr class="separator:ad454b79aa66ce12e9cde041c4e1eab20"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1684626125c8270fc1e12a53db7c37fb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1684626125c8270fc1e12a53db7c37fb"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#a1684626125c8270fc1e12a53db7c37fb">texture3d</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture)</td></tr>
<tr class="memdesc:a1684626125c8270fc1e12a53db7c37fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00017.html" title="3d texture ">texture3d</a> view with an existing storage_linear. <br /></td></tr>
<tr class="separator:a1684626125c8270fc1e12a53db7c37fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46536f2fa53ace0f51b6fc8820de9344"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46536f2fa53ace0f51b6fc8820de9344"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#a46536f2fa53ace0f51b6fc8820de9344">texture3d</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, size_type BaseLayer, size_type MaxLayer, size_type BaseFace, size_type MaxFace, size_type BaseLevel, size_type MaxLevel, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a46536f2fa53ace0f51b6fc8820de9344"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00017.html" title="3d texture ">texture3d</a> view with an existing storage_linear. <br /></td></tr>
<tr class="separator:a46536f2fa53ace0f51b6fc8820de9344"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada56d4288fb69338912b751bdb9278a5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ada56d4288fb69338912b751bdb9278a5"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#ada56d4288fb69338912b751bdb9278a5">texture3d</a> (<a class="el" href="a00017.html">texture3d</a> const &amp;Texture, size_type BaseLevel, size_type MaxLevel)</td></tr>
<tr class="memdesc:ada56d4288fb69338912b751bdb9278a5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00017.html" title="3d texture ">texture3d</a> view, reference a subset of an existing <a class="el" href="a00017.html" title="3d texture ">texture3d</a> instance. <br /></td></tr>
<tr class="separator:ada56d4288fb69338912b751bdb9278a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_a00012"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00012')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="a00012.html">texture</a></td></tr>
<tr class="memitem:ae7c1f35cf657c7bbe9eae2b39e44f728 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae7c1f35cf657c7bbe9eae2b39e44f728"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ae7c1f35cf657c7bbe9eae2b39e44f728">base_face</a> () const </td></tr>
<tr class="memdesc:ae7c1f35cf657c7bbe9eae2b39e44f728 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the base face of the texture instance, effectively a memory offset in the actual texture storage_type to identify where to start reading the faces. <br /></td></tr>
<tr class="separator:ae7c1f35cf657c7bbe9eae2b39e44f728 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1aeb020d8f82035e607b209c3841dee2 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1aeb020d8f82035e607b209c3841dee2"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a1aeb020d8f82035e607b209c3841dee2">base_layer</a> () const </td></tr>
<tr class="memdesc:a1aeb020d8f82035e607b209c3841dee2 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the base layer of the texture instance, effectively a memory offset in the actual texture storage_type to identify where to start reading the layers. <br /></td></tr>
<tr class="separator:a1aeb020d8f82035e607b209c3841dee2 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01c07293e367b293736943e92f6a9e98 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a01c07293e367b293736943e92f6a9e98"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a01c07293e367b293736943e92f6a9e98">base_level</a> () const </td></tr>
<tr class="memdesc:a01c07293e367b293736943e92f6a9e98 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the base level of the texture instance, effectively a memory offset in the actual texture storage_type to identify where to start reading the levels. <br /></td></tr>
<tr class="separator:a01c07293e367b293736943e92f6a9e98 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8bb3912a3ce86b15842e79d0b421204 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8bb3912a3ce86b15842e79d0b421204"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a> ()</td></tr>
<tr class="memdesc:ac8bb3912a3ce86b15842e79d0b421204 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the entire texture storage_linear with zeros. <br /></td></tr>
<tr class="separator:ac8bb3912a3ce86b15842e79d0b421204 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="memTemplParams" colspan="2">template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a5430e0073bc8a24264b7133f25f0edec">clear</a> (gen_type const &amp;Texel)</td></tr>
<tr class="memdesc:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the entire texture storage_linear with Texel which type must match the texture storage_linear format block size If the type of gen_type doesn't match the type of the texture format, no conversion is performed and the data will be reinterpreted as if is was of the texture format. <a href="#a5430e0073bc8a24264b7133f25f0edec">More...</a><br /></td></tr>
<tr class="separator:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a54710883dcdf8a8f8f9bfc13e9dd5398"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a54710883dcdf8a8f8f9bfc13e9dd5398">clear</a> (size_type Layer, size_type Face, size_type Level, gen_type const &amp;BlockData)</td></tr>
<tr class="memdesc:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear a specific image of a texture. <br /></td></tr>
<tr class="separator:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1df5aef4908916286c693427ae042eca"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a1df5aef4908916286c693427ae042eca">clear</a> (size_type Layer, size_type Face, size_type Level, extent_type const &amp;TexelOffset, extent_type const &amp;TexelExtent, gen_type const &amp;BlockData)</td></tr>
<tr class="memdesc:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear a subset of a specific image of a texture. <br /></td></tr>
<tr class="separator:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade92aae99ac3524a83809acdfd8c0715 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade92aae99ac3524a83809acdfd8c0715"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ade92aae99ac3524a83809acdfd8c0715">copy</a> (<a class="el" href="a00012.html">texture</a> const &amp;TextureSrc, size_t LayerSrc, size_t FaceSrc, size_t LevelSrc, size_t LayerDst, size_t FaceDst, size_t LevelDst)</td></tr>
<tr class="memdesc:ade92aae99ac3524a83809acdfd8c0715 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy a specific image of a texture. <br /></td></tr>
<tr class="separator:ade92aae99ac3524a83809acdfd8c0715 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace50b0c766f3c82847eda49459eec7e0 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ace50b0c766f3c82847eda49459eec7e0"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ace50b0c766f3c82847eda49459eec7e0">copy</a> (<a class="el" href="a00012.html">texture</a> const &amp;TextureSrc, size_t LayerSrc, size_t FaceSrc, size_t LevelSrc, extent_type const &amp;OffsetSrc, size_t LayerDst, size_t FaceDst, size_t LevelDst, extent_type const &amp;OffsetDst, extent_type const &amp;Extent)</td></tr>
<tr class="memdesc:ace50b0c766f3c82847eda49459eec7e0 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy a subset of a specific image of a texture. <br /></td></tr>
<tr class="separator:ace50b0c766f3c82847eda49459eec7e0 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f2c67dc864c6b6e705710853b5568ef inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f2c67dc864c6b6e705710853b5568ef"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a3f2c67dc864c6b6e705710853b5568ef">data</a> ()</td></tr>
<tr class="memdesc:a3f2c67dc864c6b6e705710853b5568ef inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:a3f2c67dc864c6b6e705710853b5568ef inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="aecfb33a652ea3f984735a031e4af697f"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#aecfb33a652ea3f984735a031e4af697f">data</a> ()</td></tr>
<tr class="memdesc:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec236abf7eac8ff4eec54eda033b9288 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec236abf7eac8ff4eec54eda033b9288"></a>
void const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aec236abf7eac8ff4eec54eda033b9288">data</a> () const </td></tr>
<tr class="memdesc:aec236abf7eac8ff4eec54eda033b9288 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:aec236abf7eac8ff4eec54eda033b9288 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8c538fecdc895b20bbd61890bffe0fdb"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type const *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a8c538fecdc895b20bbd61890bffe0fdb">data</a> () const </td></tr>
<tr class="memdesc:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76d02b884284dee754400f17bb7f5053 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a76d02b884284dee754400f17bb7f5053"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a76d02b884284dee754400f17bb7f5053">data</a> (size_type Layer, size_type Face, size_type Level)</td></tr>
<tr class="memdesc:a76d02b884284dee754400f17bb7f5053 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:a76d02b884284dee754400f17bb7f5053 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad0d21d1d0e5888e0d546dc585d30249 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad0d21d1d0e5888e0d546dc585d30249"></a>
void const *const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aad0d21d1d0e5888e0d546dc585d30249">data</a> (size_type Layer, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:aad0d21d1d0e5888e0d546dc585d30249 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:aad0d21d1d0e5888e0d546dc585d30249 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a42214ff33bec0fa5dd52c2b0df7dcdbe"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a42214ff33bec0fa5dd52c2b0df7dcdbe">data</a> (size_type Layer, size_type Face, size_type Level)</td></tr>
<tr class="memdesc:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a272d7f02634851f003d81a25407ba782"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type const *const&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a272d7f02634851f003d81a25407ba782">data</a> (size_type Layer, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6e61de369e994009e36f344f99c15ad inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac6e61de369e994009e36f344f99c15ad"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ac6e61de369e994009e36f344f99c15ad">empty</a> () const </td></tr>
<tr class="memdesc:ac6e61de369e994009e36f344f99c15ad inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return whether the texture instance is empty, no storage_type or description have been assigned to the instance. <br /></td></tr>
<tr class="separator:ac6e61de369e994009e36f344f99c15ad inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9122bf87edd23bd731bd9eaf072e757 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9122bf87edd23bd731bd9eaf072e757"></a>
extent_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aa9122bf87edd23bd731bd9eaf072e757">extent</a> (size_type Level=0) const </td></tr>
<tr class="memdesc:aa9122bf87edd23bd731bd9eaf072e757 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the size of a texture instance: width, height and depth. <br /></td></tr>
<tr class="separator:aa9122bf87edd23bd731bd9eaf072e757 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3914cdf138e9267662ac7147fe71d644 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3914cdf138e9267662ac7147fe71d644"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a3914cdf138e9267662ac7147fe71d644">faces</a> () const </td></tr>
<tr class="memdesc:a3914cdf138e9267662ac7147fe71d644 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <a class="el" href="a00012.html#aa18daf8e8534d4cefabf3b7dfd43a6f3" title="Return the max face of the texture instance, effectively a memory offset to the beginning of the last...">max_face()</a> - <a class="el" href="a00012.html#ae7c1f35cf657c7bbe9eae2b39e44f728" title="Return the base face of the texture instance, effectively a memory offset in the actual texture stora...">base_face()</a> + 1. <br /></td></tr>
<tr class="separator:a3914cdf138e9267662ac7147fe71d644 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad94928ca00873970455c1fb2d3c03fd8 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad94928ca00873970455c1fb2d3c03fd8"></a>
<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ad94928ca00873970455c1fb2d3c03fd8">format</a> () const </td></tr>
<tr class="memdesc:ad94928ca00873970455c1fb2d3c03fd8 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the texture instance format. <br /></td></tr>
<tr class="separator:ad94928ca00873970455c1fb2d3c03fd8 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac4e6a627c907856620b7eb161c9b85d inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac4e6a627c907856620b7eb161c9b85d"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aac4e6a627c907856620b7eb161c9b85d">layers</a> () const </td></tr>
<tr class="memdesc:aac4e6a627c907856620b7eb161c9b85d inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <a class="el" href="a00012.html#af8ae0072dcfb583fcd278650b3f55ec6" title="Return the max layer of the texture instance, effectively a memory offset to the beginning of the las...">max_layer()</a> - <a class="el" href="a00012.html#a1aeb020d8f82035e607b209c3841dee2" title="Return the base layer of the texture instance, effectively a memory offset in the actual texture stor...">base_layer()</a> + 1. <br /></td></tr>
<tr class="separator:aac4e6a627c907856620b7eb161c9b85d inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b85eb415046f5a31b2d9eff8cefc24c inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9b85eb415046f5a31b2d9eff8cefc24c"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a9b85eb415046f5a31b2d9eff8cefc24c">levels</a> () const </td></tr>
<tr class="memdesc:a9b85eb415046f5a31b2d9eff8cefc24c inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <a class="el" href="a00012.html#ae174e356683cee9bf9d3e11df4d6f78a" title="Return the max level of the texture instance, effectively a memory offset to the beginning of the las...">max_level()</a> - <a class="el" href="a00012.html#a01c07293e367b293736943e92f6a9e98" title="Return the base level of the texture instance, effectively a memory offset in the actual texture stor...">base_level()</a> + 1. <br /></td></tr>
<tr class="separator:a9b85eb415046f5a31b2d9eff8cefc24c inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a643d8893b84d50b7a3c7fc53b218da8a"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a643d8893b84d50b7a3c7fc53b218da8a">load</a> (extent_type const &amp;TexelCoord, size_type Layer, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch a texel from a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa18daf8e8534d4cefabf3b7dfd43a6f3 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa18daf8e8534d4cefabf3b7dfd43a6f3"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aa18daf8e8534d4cefabf3b7dfd43a6f3">max_face</a> () const </td></tr>
<tr class="memdesc:aa18daf8e8534d4cefabf3b7dfd43a6f3 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the max face of the texture instance, effectively a memory offset to the beginning of the last face in the actual texture storage_type that the texture instance can access. <br /></td></tr>
<tr class="separator:aa18daf8e8534d4cefabf3b7dfd43a6f3 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8ae0072dcfb583fcd278650b3f55ec6 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8ae0072dcfb583fcd278650b3f55ec6"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#af8ae0072dcfb583fcd278650b3f55ec6">max_layer</a> () const </td></tr>
<tr class="memdesc:af8ae0072dcfb583fcd278650b3f55ec6 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the max layer of the texture instance, effectively a memory offset to the beginning of the last layer in the actual texture storage_type that the texture instance can access. <br /></td></tr>
<tr class="separator:af8ae0072dcfb583fcd278650b3f55ec6 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae174e356683cee9bf9d3e11df4d6f78a inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae174e356683cee9bf9d3e11df4d6f78a"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ae174e356683cee9bf9d3e11df4d6f78a">max_level</a> () const </td></tr>
<tr class="memdesc:ae174e356683cee9bf9d3e11df4d6f78a inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the max level of the texture instance, effectively a memory offset to the beginning of the last level in the actual texture storage_type that the texture instance can access. <br /></td></tr>
<tr class="separator:ae174e356683cee9bf9d3e11df4d6f78a inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a503ab01f6c0142145d3434f6924714e7 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a503ab01f6c0142145d3434f6924714e7"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a503ab01f6c0142145d3434f6924714e7">size</a> () const </td></tr>
<tr class="memdesc:a503ab01f6c0142145d3434f6924714e7 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the memory size of a texture instance storage_type in bytes. <br /></td></tr>
<tr class="separator:a503ab01f6c0142145d3434f6924714e7 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="memTemplParams" colspan="2">template&lt;typename genType &gt; </td></tr>
<tr class="memitem:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">size_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a24789b8cce4dcbe8e0d3a47b68447aba">size</a> () const </td></tr>
<tr class="memdesc:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the number of blocks contained in a texture instance storage_type. <a href="#a24789b8cce4dcbe8e0d3a47b68447aba">More...</a><br /></td></tr>
<tr class="separator:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46f11d7b73797c3e4b9a6da00f505fd8 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46f11d7b73797c3e4b9a6da00f505fd8"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a46f11d7b73797c3e4b9a6da00f505fd8">size</a> (size_type Level) const </td></tr>
<tr class="memdesc:a46f11d7b73797c3e4b9a6da00f505fd8 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the memory size of a specific level identified by Level. <br /></td></tr>
<tr class="separator:a46f11d7b73797c3e4b9a6da00f505fd8 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="memTemplParams" colspan="2">template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">size_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a665df3b51266310cd164cd5aa9c6e80e">size</a> (size_type Level) const </td></tr>
<tr class="memdesc:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the memory size of a specific level identified by Level. <a href="#a665df3b51266310cd164cd5aa9c6e80e">More...</a><br /></td></tr>
<tr class="separator:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a290419a437522cfe1981880fbfd9f810"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a290419a437522cfe1981880fbfd9f810">store</a> (extent_type const &amp;TexelCoord, size_type Layer, size_type Face, size_type Level, gen_type const &amp;Texel)</td></tr>
<tr class="memdesc:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a texel to a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="aa2c92d09106b13d3d20dd0909ada8a68"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#aa2c92d09106b13d3d20dd0909ada8a68">swizzle</a> (gli::swizzles const &amp;Swizzles)</td></tr>
<tr class="memdesc:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reorder the component in texture memory. <br /></td></tr>
<tr class="separator:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59d3d7946e94bc294444c5f55db70c21 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59d3d7946e94bc294444c5f55db70c21"></a>
<a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a59d3d7946e94bc294444c5f55db70c21">target</a> () const </td></tr>
<tr class="memdesc:a59d3d7946e94bc294444c5f55db70c21 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the target of a texture instance. <br /></td></tr>
<tr class="separator:a59d3d7946e94bc294444c5f55db70c21 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9921e1ac4df78bce54d328affd59da28 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9921e1ac4df78bce54d328affd59da28"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a9921e1ac4df78bce54d328affd59da28">texture</a> ()</td></tr>
<tr class="memdesc:a9921e1ac4df78bce54d328affd59da28 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an empty texture instance. <br /></td></tr>
<tr class="separator:a9921e1ac4df78bce54d328affd59da28 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ca26840db935a649290350da2b5f5ca inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a4ca26840db935a649290350da2b5f5ca">texture</a> (<a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a> Target, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, extent_type const &amp;Extent, size_type Layers, size_type Faces, size_type Levels, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a4ca26840db935a649290350da2b5f5ca inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture object and allocate a texture storage for it. <a href="#a4ca26840db935a649290350da2b5f5ca">More...</a><br /></td></tr>
<tr class="separator:a4ca26840db935a649290350da2b5f5ca inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9bbe0e3db3a8e9b7878acf20bc9f4c81 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a9bbe0e3db3a8e9b7878acf20bc9f4c81">texture</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture, <a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a> Target, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, size_type BaseLayer, size_type MaxLayer, size_type BaseFace, size_type MaxFace, size_type BaseLevel, size_type MaxLevel, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a9bbe0e3db3a8e9b7878acf20bc9f4c81 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture object by sharing an existing texture storage_type from another texture instance. <a href="#a9bbe0e3db3a8e9b7878acf20bc9f4c81">More...</a><br /></td></tr>
<tr class="separator:a9bbe0e3db3a8e9b7878acf20bc9f4c81 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3efa6c67e681cdb4630d99cbb355aa3d inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a3efa6c67e681cdb4630d99cbb355aa3d">texture</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture, <a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a> Target, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a3efa6c67e681cdb4630d99cbb355aa3d inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture object by sharing an existing texture storage_type from another texture instance. <a href="#a3efa6c67e681cdb4630d99cbb355aa3d">More...</a><br /></td></tr>
<tr class="separator:a3efa6c67e681cdb4630d99cbb355aa3d inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>3d texture </p>
<p>Definition at line <a class="el" href="a00067_source.html#l00012">12</a> of file <a class="el" href="a00067_source.html">texture3d.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 366 B

View File

@ -1,326 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: texture_cube Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="a00074.html">gli</a></li><li class="navelem"><a class="el" href="a00018.html">texture_cube</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="a00096.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">texture_cube Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Cube map texture.
<a href="a00018.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for texture_cube:</div>
<div class="dyncontent">
<div class="center">
<img src="a00018.png" usemap="#texture_cube_map" alt=""/>
<map id="texture_cube_map" name="texture_cube_map">
<area href="a00012.html" title="Genetic texture class. It can support any target. " alt="texture" shape="rect" coords="0,0,85,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aa9122bf87edd23bd731bd9eaf072e757"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9122bf87edd23bd731bd9eaf072e757"></a>
extent_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00018.html#aa9122bf87edd23bd731bd9eaf072e757">extent</a> (size_type Level=0) const </td></tr>
<tr class="memdesc:aa9122bf87edd23bd731bd9eaf072e757"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the dimensions of a texture instance: width and height where both should be equal. <br /></td></tr>
<tr class="separator:aa9122bf87edd23bd731bd9eaf072e757"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae5add7b2c9cdec42300fbfcf737460a"><td class="memTemplParams" colspan="2"><a class="anchor" id="aae5add7b2c9cdec42300fbfcf737460a"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:aae5add7b2c9cdec42300fbfcf737460a"><td class="memTemplItemLeft" align="right" valign="top">gen_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00018.html#aae5add7b2c9cdec42300fbfcf737460a">load</a> (extent_type const &amp;TexelCoord, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:aae5add7b2c9cdec42300fbfcf737460a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch a texel from a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:aae5add7b2c9cdec42300fbfcf737460a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6543ff56d9f3f5ac7928d535d73406aa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6543ff56d9f3f5ac7928d535d73406aa"></a>
<a class="el" href="a00015.html">texture2d</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00018.html#a6543ff56d9f3f5ac7928d535d73406aa">operator[]</a> (size_type Face) const </td></tr>
<tr class="memdesc:a6543ff56d9f3f5ac7928d535d73406aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a view of the texture identified by Face in the texture cube. <br /></td></tr>
<tr class="separator:a6543ff56d9f3f5ac7928d535d73406aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ac10efd79ea9c5d1c68b4a1d774e6c8"><td class="memTemplParams" colspan="2"><a class="anchor" id="a9ac10efd79ea9c5d1c68b4a1d774e6c8"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a9ac10efd79ea9c5d1c68b4a1d774e6c8"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00018.html#a9ac10efd79ea9c5d1c68b4a1d774e6c8">store</a> (extent_type const &amp;TexelCoord, size_type Face, size_type Level, gen_type const &amp;Texel)</td></tr>
<tr class="memdesc:a9ac10efd79ea9c5d1c68b4a1d774e6c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a texel to a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a9ac10efd79ea9c5d1c68b4a1d774e6c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a63fbdb5a8e25e961bcda4a364e6f93f8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63fbdb5a8e25e961bcda4a364e6f93f8"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00018.html#a63fbdb5a8e25e961bcda4a364e6f93f8">texture_cube</a> ()</td></tr>
<tr class="memdesc:a63fbdb5a8e25e961bcda4a364e6f93f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an empty texture cube. <br /></td></tr>
<tr class="separator:a63fbdb5a8e25e961bcda4a364e6f93f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abad8ad5e5c675d10924ee7c2e5ac05e5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abad8ad5e5c675d10924ee7c2e5ac05e5"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00018.html#abad8ad5e5c675d10924ee7c2e5ac05e5">texture_cube</a> (<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, extent_type const &amp;Extent, size_type Levels, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:abad8ad5e5c675d10924ee7c2e5ac05e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00018.html" title="Cube map texture. ">texture_cube</a> and allocate a new storage_linear. <br /></td></tr>
<tr class="separator:abad8ad5e5c675d10924ee7c2e5ac05e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a030886a080600295a4ce8b4fe9503a1f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a030886a080600295a4ce8b4fe9503a1f"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00018.html#a030886a080600295a4ce8b4fe9503a1f">texture_cube</a> (<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, extent_type const &amp;Extent, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a030886a080600295a4ce8b4fe9503a1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00018.html" title="Cube map texture. ">texture_cube</a> and allocate a new storage_linear with a complete mipmap chain. <br /></td></tr>
<tr class="separator:a030886a080600295a4ce8b4fe9503a1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad7d04a77012aacf96a5a6802ec777891"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad7d04a77012aacf96a5a6802ec777891"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00018.html#ad7d04a77012aacf96a5a6802ec777891">texture_cube</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture)</td></tr>
<tr class="memdesc:ad7d04a77012aacf96a5a6802ec777891"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00018.html" title="Cube map texture. ">texture_cube</a> view with an existing storage_linear. <br /></td></tr>
<tr class="separator:ad7d04a77012aacf96a5a6802ec777891"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9e344bde8201f02dcafcd817687bfdb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad9e344bde8201f02dcafcd817687bfdb"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00018.html#ad9e344bde8201f02dcafcd817687bfdb">texture_cube</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, size_type BaseLayer, size_type MaxLayer, size_type BaseFace, size_type MaxFace, size_type BaseLevel, size_type MaxLevel, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:ad9e344bde8201f02dcafcd817687bfdb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00018.html" title="Cube map texture. ">texture_cube</a> view with an existing storage_linear. <br /></td></tr>
<tr class="separator:ad9e344bde8201f02dcafcd817687bfdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae9fbc90d3db03e6e0427d99fbc0107d2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae9fbc90d3db03e6e0427d99fbc0107d2"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00018.html#ae9fbc90d3db03e6e0427d99fbc0107d2">texture_cube</a> (<a class="el" href="a00018.html">texture_cube</a> const &amp;Texture, size_type BaseFace, size_type MaxFace, size_type BaseLevel, size_type MaxLevel)</td></tr>
<tr class="memdesc:ae9fbc90d3db03e6e0427d99fbc0107d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00018.html" title="Cube map texture. ">texture_cube</a> view, reference a subset of an existing <a class="el" href="a00018.html" title="Cube map texture. ">texture_cube</a> instance. <br /></td></tr>
<tr class="separator:ae9fbc90d3db03e6e0427d99fbc0107d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_a00012"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00012')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="a00012.html">texture</a></td></tr>
<tr class="memitem:ae7c1f35cf657c7bbe9eae2b39e44f728 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae7c1f35cf657c7bbe9eae2b39e44f728"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ae7c1f35cf657c7bbe9eae2b39e44f728">base_face</a> () const </td></tr>
<tr class="memdesc:ae7c1f35cf657c7bbe9eae2b39e44f728 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the base face of the texture instance, effectively a memory offset in the actual texture storage_type to identify where to start reading the faces. <br /></td></tr>
<tr class="separator:ae7c1f35cf657c7bbe9eae2b39e44f728 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1aeb020d8f82035e607b209c3841dee2 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1aeb020d8f82035e607b209c3841dee2"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a1aeb020d8f82035e607b209c3841dee2">base_layer</a> () const </td></tr>
<tr class="memdesc:a1aeb020d8f82035e607b209c3841dee2 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the base layer of the texture instance, effectively a memory offset in the actual texture storage_type to identify where to start reading the layers. <br /></td></tr>
<tr class="separator:a1aeb020d8f82035e607b209c3841dee2 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01c07293e367b293736943e92f6a9e98 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a01c07293e367b293736943e92f6a9e98"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a01c07293e367b293736943e92f6a9e98">base_level</a> () const </td></tr>
<tr class="memdesc:a01c07293e367b293736943e92f6a9e98 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the base level of the texture instance, effectively a memory offset in the actual texture storage_type to identify where to start reading the levels. <br /></td></tr>
<tr class="separator:a01c07293e367b293736943e92f6a9e98 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8bb3912a3ce86b15842e79d0b421204 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8bb3912a3ce86b15842e79d0b421204"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a> ()</td></tr>
<tr class="memdesc:ac8bb3912a3ce86b15842e79d0b421204 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the entire texture storage_linear with zeros. <br /></td></tr>
<tr class="separator:ac8bb3912a3ce86b15842e79d0b421204 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="memTemplParams" colspan="2">template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a5430e0073bc8a24264b7133f25f0edec">clear</a> (gen_type const &amp;Texel)</td></tr>
<tr class="memdesc:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the entire texture storage_linear with Texel which type must match the texture storage_linear format block size If the type of gen_type doesn't match the type of the texture format, no conversion is performed and the data will be reinterpreted as if is was of the texture format. <a href="#a5430e0073bc8a24264b7133f25f0edec">More...</a><br /></td></tr>
<tr class="separator:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a54710883dcdf8a8f8f9bfc13e9dd5398"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a54710883dcdf8a8f8f9bfc13e9dd5398">clear</a> (size_type Layer, size_type Face, size_type Level, gen_type const &amp;BlockData)</td></tr>
<tr class="memdesc:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear a specific image of a texture. <br /></td></tr>
<tr class="separator:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1df5aef4908916286c693427ae042eca"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a1df5aef4908916286c693427ae042eca">clear</a> (size_type Layer, size_type Face, size_type Level, extent_type const &amp;TexelOffset, extent_type const &amp;TexelExtent, gen_type const &amp;BlockData)</td></tr>
<tr class="memdesc:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear a subset of a specific image of a texture. <br /></td></tr>
<tr class="separator:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade92aae99ac3524a83809acdfd8c0715 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade92aae99ac3524a83809acdfd8c0715"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ade92aae99ac3524a83809acdfd8c0715">copy</a> (<a class="el" href="a00012.html">texture</a> const &amp;TextureSrc, size_t LayerSrc, size_t FaceSrc, size_t LevelSrc, size_t LayerDst, size_t FaceDst, size_t LevelDst)</td></tr>
<tr class="memdesc:ade92aae99ac3524a83809acdfd8c0715 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy a specific image of a texture. <br /></td></tr>
<tr class="separator:ade92aae99ac3524a83809acdfd8c0715 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace50b0c766f3c82847eda49459eec7e0 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ace50b0c766f3c82847eda49459eec7e0"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ace50b0c766f3c82847eda49459eec7e0">copy</a> (<a class="el" href="a00012.html">texture</a> const &amp;TextureSrc, size_t LayerSrc, size_t FaceSrc, size_t LevelSrc, extent_type const &amp;OffsetSrc, size_t LayerDst, size_t FaceDst, size_t LevelDst, extent_type const &amp;OffsetDst, extent_type const &amp;Extent)</td></tr>
<tr class="memdesc:ace50b0c766f3c82847eda49459eec7e0 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy a subset of a specific image of a texture. <br /></td></tr>
<tr class="separator:ace50b0c766f3c82847eda49459eec7e0 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f2c67dc864c6b6e705710853b5568ef inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f2c67dc864c6b6e705710853b5568ef"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a3f2c67dc864c6b6e705710853b5568ef">data</a> ()</td></tr>
<tr class="memdesc:a3f2c67dc864c6b6e705710853b5568ef inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:a3f2c67dc864c6b6e705710853b5568ef inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="aecfb33a652ea3f984735a031e4af697f"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#aecfb33a652ea3f984735a031e4af697f">data</a> ()</td></tr>
<tr class="memdesc:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec236abf7eac8ff4eec54eda033b9288 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec236abf7eac8ff4eec54eda033b9288"></a>
void const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aec236abf7eac8ff4eec54eda033b9288">data</a> () const </td></tr>
<tr class="memdesc:aec236abf7eac8ff4eec54eda033b9288 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:aec236abf7eac8ff4eec54eda033b9288 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8c538fecdc895b20bbd61890bffe0fdb"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type const *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a8c538fecdc895b20bbd61890bffe0fdb">data</a> () const </td></tr>
<tr class="memdesc:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76d02b884284dee754400f17bb7f5053 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a76d02b884284dee754400f17bb7f5053"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a76d02b884284dee754400f17bb7f5053">data</a> (size_type Layer, size_type Face, size_type Level)</td></tr>
<tr class="memdesc:a76d02b884284dee754400f17bb7f5053 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:a76d02b884284dee754400f17bb7f5053 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad0d21d1d0e5888e0d546dc585d30249 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad0d21d1d0e5888e0d546dc585d30249"></a>
void const *const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aad0d21d1d0e5888e0d546dc585d30249">data</a> (size_type Layer, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:aad0d21d1d0e5888e0d546dc585d30249 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:aad0d21d1d0e5888e0d546dc585d30249 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a42214ff33bec0fa5dd52c2b0df7dcdbe"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a42214ff33bec0fa5dd52c2b0df7dcdbe">data</a> (size_type Layer, size_type Face, size_type Level)</td></tr>
<tr class="memdesc:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a272d7f02634851f003d81a25407ba782"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type const *const&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a272d7f02634851f003d81a25407ba782">data</a> (size_type Layer, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6e61de369e994009e36f344f99c15ad inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac6e61de369e994009e36f344f99c15ad"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ac6e61de369e994009e36f344f99c15ad">empty</a> () const </td></tr>
<tr class="memdesc:ac6e61de369e994009e36f344f99c15ad inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return whether the texture instance is empty, no storage_type or description have been assigned to the instance. <br /></td></tr>
<tr class="separator:ac6e61de369e994009e36f344f99c15ad inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9122bf87edd23bd731bd9eaf072e757 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9122bf87edd23bd731bd9eaf072e757"></a>
extent_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aa9122bf87edd23bd731bd9eaf072e757">extent</a> (size_type Level=0) const </td></tr>
<tr class="memdesc:aa9122bf87edd23bd731bd9eaf072e757 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the size of a texture instance: width, height and depth. <br /></td></tr>
<tr class="separator:aa9122bf87edd23bd731bd9eaf072e757 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3914cdf138e9267662ac7147fe71d644 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3914cdf138e9267662ac7147fe71d644"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a3914cdf138e9267662ac7147fe71d644">faces</a> () const </td></tr>
<tr class="memdesc:a3914cdf138e9267662ac7147fe71d644 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <a class="el" href="a00012.html#aa18daf8e8534d4cefabf3b7dfd43a6f3" title="Return the max face of the texture instance, effectively a memory offset to the beginning of the last...">max_face()</a> - <a class="el" href="a00012.html#ae7c1f35cf657c7bbe9eae2b39e44f728" title="Return the base face of the texture instance, effectively a memory offset in the actual texture stora...">base_face()</a> + 1. <br /></td></tr>
<tr class="separator:a3914cdf138e9267662ac7147fe71d644 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad94928ca00873970455c1fb2d3c03fd8 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad94928ca00873970455c1fb2d3c03fd8"></a>
<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ad94928ca00873970455c1fb2d3c03fd8">format</a> () const </td></tr>
<tr class="memdesc:ad94928ca00873970455c1fb2d3c03fd8 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the texture instance format. <br /></td></tr>
<tr class="separator:ad94928ca00873970455c1fb2d3c03fd8 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac4e6a627c907856620b7eb161c9b85d inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac4e6a627c907856620b7eb161c9b85d"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aac4e6a627c907856620b7eb161c9b85d">layers</a> () const </td></tr>
<tr class="memdesc:aac4e6a627c907856620b7eb161c9b85d inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <a class="el" href="a00012.html#af8ae0072dcfb583fcd278650b3f55ec6" title="Return the max layer of the texture instance, effectively a memory offset to the beginning of the las...">max_layer()</a> - <a class="el" href="a00012.html#a1aeb020d8f82035e607b209c3841dee2" title="Return the base layer of the texture instance, effectively a memory offset in the actual texture stor...">base_layer()</a> + 1. <br /></td></tr>
<tr class="separator:aac4e6a627c907856620b7eb161c9b85d inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b85eb415046f5a31b2d9eff8cefc24c inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9b85eb415046f5a31b2d9eff8cefc24c"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a9b85eb415046f5a31b2d9eff8cefc24c">levels</a> () const </td></tr>
<tr class="memdesc:a9b85eb415046f5a31b2d9eff8cefc24c inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <a class="el" href="a00012.html#ae174e356683cee9bf9d3e11df4d6f78a" title="Return the max level of the texture instance, effectively a memory offset to the beginning of the las...">max_level()</a> - <a class="el" href="a00012.html#a01c07293e367b293736943e92f6a9e98" title="Return the base level of the texture instance, effectively a memory offset in the actual texture stor...">base_level()</a> + 1. <br /></td></tr>
<tr class="separator:a9b85eb415046f5a31b2d9eff8cefc24c inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a643d8893b84d50b7a3c7fc53b218da8a"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a643d8893b84d50b7a3c7fc53b218da8a">load</a> (extent_type const &amp;TexelCoord, size_type Layer, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch a texel from a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa18daf8e8534d4cefabf3b7dfd43a6f3 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa18daf8e8534d4cefabf3b7dfd43a6f3"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aa18daf8e8534d4cefabf3b7dfd43a6f3">max_face</a> () const </td></tr>
<tr class="memdesc:aa18daf8e8534d4cefabf3b7dfd43a6f3 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the max face of the texture instance, effectively a memory offset to the beginning of the last face in the actual texture storage_type that the texture instance can access. <br /></td></tr>
<tr class="separator:aa18daf8e8534d4cefabf3b7dfd43a6f3 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8ae0072dcfb583fcd278650b3f55ec6 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8ae0072dcfb583fcd278650b3f55ec6"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#af8ae0072dcfb583fcd278650b3f55ec6">max_layer</a> () const </td></tr>
<tr class="memdesc:af8ae0072dcfb583fcd278650b3f55ec6 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the max layer of the texture instance, effectively a memory offset to the beginning of the last layer in the actual texture storage_type that the texture instance can access. <br /></td></tr>
<tr class="separator:af8ae0072dcfb583fcd278650b3f55ec6 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae174e356683cee9bf9d3e11df4d6f78a inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae174e356683cee9bf9d3e11df4d6f78a"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ae174e356683cee9bf9d3e11df4d6f78a">max_level</a> () const </td></tr>
<tr class="memdesc:ae174e356683cee9bf9d3e11df4d6f78a inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the max level of the texture instance, effectively a memory offset to the beginning of the last level in the actual texture storage_type that the texture instance can access. <br /></td></tr>
<tr class="separator:ae174e356683cee9bf9d3e11df4d6f78a inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a503ab01f6c0142145d3434f6924714e7 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a503ab01f6c0142145d3434f6924714e7"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a503ab01f6c0142145d3434f6924714e7">size</a> () const </td></tr>
<tr class="memdesc:a503ab01f6c0142145d3434f6924714e7 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the memory size of a texture instance storage_type in bytes. <br /></td></tr>
<tr class="separator:a503ab01f6c0142145d3434f6924714e7 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="memTemplParams" colspan="2">template&lt;typename genType &gt; </td></tr>
<tr class="memitem:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">size_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a24789b8cce4dcbe8e0d3a47b68447aba">size</a> () const </td></tr>
<tr class="memdesc:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the number of blocks contained in a texture instance storage_type. <a href="#a24789b8cce4dcbe8e0d3a47b68447aba">More...</a><br /></td></tr>
<tr class="separator:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46f11d7b73797c3e4b9a6da00f505fd8 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46f11d7b73797c3e4b9a6da00f505fd8"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a46f11d7b73797c3e4b9a6da00f505fd8">size</a> (size_type Level) const </td></tr>
<tr class="memdesc:a46f11d7b73797c3e4b9a6da00f505fd8 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the memory size of a specific level identified by Level. <br /></td></tr>
<tr class="separator:a46f11d7b73797c3e4b9a6da00f505fd8 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="memTemplParams" colspan="2">template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">size_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a665df3b51266310cd164cd5aa9c6e80e">size</a> (size_type Level) const </td></tr>
<tr class="memdesc:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the memory size of a specific level identified by Level. <a href="#a665df3b51266310cd164cd5aa9c6e80e">More...</a><br /></td></tr>
<tr class="separator:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a290419a437522cfe1981880fbfd9f810"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a290419a437522cfe1981880fbfd9f810">store</a> (extent_type const &amp;TexelCoord, size_type Layer, size_type Face, size_type Level, gen_type const &amp;Texel)</td></tr>
<tr class="memdesc:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a texel to a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="aa2c92d09106b13d3d20dd0909ada8a68"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#aa2c92d09106b13d3d20dd0909ada8a68">swizzle</a> (gli::swizzles const &amp;Swizzles)</td></tr>
<tr class="memdesc:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reorder the component in texture memory. <br /></td></tr>
<tr class="separator:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59d3d7946e94bc294444c5f55db70c21 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59d3d7946e94bc294444c5f55db70c21"></a>
<a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a59d3d7946e94bc294444c5f55db70c21">target</a> () const </td></tr>
<tr class="memdesc:a59d3d7946e94bc294444c5f55db70c21 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the target of a texture instance. <br /></td></tr>
<tr class="separator:a59d3d7946e94bc294444c5f55db70c21 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9921e1ac4df78bce54d328affd59da28 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9921e1ac4df78bce54d328affd59da28"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a9921e1ac4df78bce54d328affd59da28">texture</a> ()</td></tr>
<tr class="memdesc:a9921e1ac4df78bce54d328affd59da28 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an empty texture instance. <br /></td></tr>
<tr class="separator:a9921e1ac4df78bce54d328affd59da28 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ca26840db935a649290350da2b5f5ca inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a4ca26840db935a649290350da2b5f5ca">texture</a> (<a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a> Target, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, extent_type const &amp;Extent, size_type Layers, size_type Faces, size_type Levels, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a4ca26840db935a649290350da2b5f5ca inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture object and allocate a texture storage for it. <a href="#a4ca26840db935a649290350da2b5f5ca">More...</a><br /></td></tr>
<tr class="separator:a4ca26840db935a649290350da2b5f5ca inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9bbe0e3db3a8e9b7878acf20bc9f4c81 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a9bbe0e3db3a8e9b7878acf20bc9f4c81">texture</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture, <a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a> Target, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, size_type BaseLayer, size_type MaxLayer, size_type BaseFace, size_type MaxFace, size_type BaseLevel, size_type MaxLevel, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a9bbe0e3db3a8e9b7878acf20bc9f4c81 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture object by sharing an existing texture storage_type from another texture instance. <a href="#a9bbe0e3db3a8e9b7878acf20bc9f4c81">More...</a><br /></td></tr>
<tr class="separator:a9bbe0e3db3a8e9b7878acf20bc9f4c81 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3efa6c67e681cdb4630d99cbb355aa3d inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a3efa6c67e681cdb4630d99cbb355aa3d">texture</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture, <a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a> Target, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a3efa6c67e681cdb4630d99cbb355aa3d inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture object by sharing an existing texture storage_type from another texture instance. <a href="#a3efa6c67e681cdb4630d99cbb355aa3d">More...</a><br /></td></tr>
<tr class="separator:a3efa6c67e681cdb4630d99cbb355aa3d inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Cube map texture. </p>
<p>Definition at line <a class="el" href="a00068_source.html#l00011">11</a> of file <a class="el" href="a00068_source.html">texture_cube.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 406 B

View File

@ -1,326 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: texture_cube_array Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="a00074.html">gli</a></li><li class="navelem"><a class="el" href="a00019.html">texture_cube_array</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="a00097.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">texture_cube_array Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Cube map array texture.
<a href="a00019.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for texture_cube_array:</div>
<div class="dyncontent">
<div class="center">
<img src="a00019.png" usemap="#texture_cube_array_map" alt=""/>
<map id="texture_cube_array_map" name="texture_cube_array_map">
<area href="a00012.html" title="Genetic texture class. It can support any target. " alt="texture" shape="rect" coords="0,0,123,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aa9122bf87edd23bd731bd9eaf072e757"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9122bf87edd23bd731bd9eaf072e757"></a>
extent_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00019.html#aa9122bf87edd23bd731bd9eaf072e757">extent</a> (size_type Level=0) const </td></tr>
<tr class="memdesc:aa9122bf87edd23bd731bd9eaf072e757"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the dimensions of a texture instance: width and height where both should be equal. <br /></td></tr>
<tr class="separator:aa9122bf87edd23bd731bd9eaf072e757"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a643d8893b84d50b7a3c7fc53b218da8a"><td class="memTemplParams" colspan="2"><a class="anchor" id="a643d8893b84d50b7a3c7fc53b218da8a"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a643d8893b84d50b7a3c7fc53b218da8a"><td class="memTemplItemLeft" align="right" valign="top">gen_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00019.html#a643d8893b84d50b7a3c7fc53b218da8a">load</a> (extent_type const &amp;TexelCoord, size_type Layer, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:a643d8893b84d50b7a3c7fc53b218da8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch a texel from a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a643d8893b84d50b7a3c7fc53b218da8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a45e21473e5c5cd2ad7c2a7f206e4f422"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a45e21473e5c5cd2ad7c2a7f206e4f422"></a>
<a class="el" href="a00018.html">texture_cube</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00019.html#a45e21473e5c5cd2ad7c2a7f206e4f422">operator[]</a> (size_type Layer) const </td></tr>
<tr class="memdesc:a45e21473e5c5cd2ad7c2a7f206e4f422"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a view of the texture identified by Layer in the texture array. <br /></td></tr>
<tr class="separator:a45e21473e5c5cd2ad7c2a7f206e4f422"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a290419a437522cfe1981880fbfd9f810"><td class="memTemplParams" colspan="2"><a class="anchor" id="a290419a437522cfe1981880fbfd9f810"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a290419a437522cfe1981880fbfd9f810"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00019.html#a290419a437522cfe1981880fbfd9f810">store</a> (extent_type const &amp;TexelCoord, size_type Layer, size_type Face, size_type Level, gen_type const &amp;Texel)</td></tr>
<tr class="memdesc:a290419a437522cfe1981880fbfd9f810"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a texel to a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a290419a437522cfe1981880fbfd9f810"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1d01124ad792578ed65d53ce9edcf8d2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1d01124ad792578ed65d53ce9edcf8d2"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00019.html#a1d01124ad792578ed65d53ce9edcf8d2">texture_cube_array</a> ()</td></tr>
<tr class="memdesc:a1d01124ad792578ed65d53ce9edcf8d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an empty texture cube array. <br /></td></tr>
<tr class="separator:a1d01124ad792578ed65d53ce9edcf8d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8976ac2bbe90e83d4cbcaf13ab9c6c24"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8976ac2bbe90e83d4cbcaf13ab9c6c24"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00019.html#a8976ac2bbe90e83d4cbcaf13ab9c6c24">texture_cube_array</a> (<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, extent_type const &amp;Extent, size_type Layers, size_type Levels, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a8976ac2bbe90e83d4cbcaf13ab9c6c24"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00019.html" title="Cube map array texture. ">texture_cube_array</a> and allocate a new storage_linear. <br /></td></tr>
<tr class="separator:a8976ac2bbe90e83d4cbcaf13ab9c6c24"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb31cf12125c2b47e1e5b7b33298d778"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adb31cf12125c2b47e1e5b7b33298d778"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00019.html#adb31cf12125c2b47e1e5b7b33298d778">texture_cube_array</a> (<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, extent_type const &amp;Extent, size_type Layers, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:adb31cf12125c2b47e1e5b7b33298d778"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00019.html" title="Cube map array texture. ">texture_cube_array</a> and allocate a new storage_linear with a complete mipmap chain. <br /></td></tr>
<tr class="separator:adb31cf12125c2b47e1e5b7b33298d778"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31b2f9e102c14d2b0155a8335f5bb0ed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a31b2f9e102c14d2b0155a8335f5bb0ed"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00019.html#a31b2f9e102c14d2b0155a8335f5bb0ed">texture_cube_array</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture)</td></tr>
<tr class="memdesc:a31b2f9e102c14d2b0155a8335f5bb0ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="a00019.html" title="Cube map array texture. ">texture_cube_array</a> view with an existing storage_linear. <br /></td></tr>
<tr class="separator:a31b2f9e102c14d2b0155a8335f5bb0ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a37de022ab21b2c19cb39985db4121dda"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a37de022ab21b2c19cb39985db4121dda"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00019.html#a37de022ab21b2c19cb39985db4121dda">texture_cube_array</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, size_type BaseLayer, size_type MaxLayer, size_type BaseFace, size_type MaxFace, size_type BaseLevel, size_type MaxLevel, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a37de022ab21b2c19cb39985db4121dda"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reference a subset of an exiting storage_linear constructor. <br /></td></tr>
<tr class="separator:a37de022ab21b2c19cb39985db4121dda"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaee6b8094978019a9985d8fee52ccd7f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaee6b8094978019a9985d8fee52ccd7f"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00019.html#aaee6b8094978019a9985d8fee52ccd7f">texture_cube_array</a> (<a class="el" href="a00019.html">texture_cube_array</a> const &amp;Texture, size_type BaseLayer, size_type MaxLayer, size_type BaseFace, size_type MaxFace, size_type BaseLevel, size_type MaxLevel)</td></tr>
<tr class="memdesc:aaee6b8094978019a9985d8fee52ccd7f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture view, reference a subset of an exiting <a class="el" href="a00019.html" title="Cube map array texture. ">texture_cube_array</a> instance. <br /></td></tr>
<tr class="separator:aaee6b8094978019a9985d8fee52ccd7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_a00012"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00012')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="a00012.html">texture</a></td></tr>
<tr class="memitem:ae7c1f35cf657c7bbe9eae2b39e44f728 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae7c1f35cf657c7bbe9eae2b39e44f728"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ae7c1f35cf657c7bbe9eae2b39e44f728">base_face</a> () const </td></tr>
<tr class="memdesc:ae7c1f35cf657c7bbe9eae2b39e44f728 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the base face of the texture instance, effectively a memory offset in the actual texture storage_type to identify where to start reading the faces. <br /></td></tr>
<tr class="separator:ae7c1f35cf657c7bbe9eae2b39e44f728 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1aeb020d8f82035e607b209c3841dee2 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1aeb020d8f82035e607b209c3841dee2"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a1aeb020d8f82035e607b209c3841dee2">base_layer</a> () const </td></tr>
<tr class="memdesc:a1aeb020d8f82035e607b209c3841dee2 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the base layer of the texture instance, effectively a memory offset in the actual texture storage_type to identify where to start reading the layers. <br /></td></tr>
<tr class="separator:a1aeb020d8f82035e607b209c3841dee2 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01c07293e367b293736943e92f6a9e98 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a01c07293e367b293736943e92f6a9e98"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a01c07293e367b293736943e92f6a9e98">base_level</a> () const </td></tr>
<tr class="memdesc:a01c07293e367b293736943e92f6a9e98 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the base level of the texture instance, effectively a memory offset in the actual texture storage_type to identify where to start reading the levels. <br /></td></tr>
<tr class="separator:a01c07293e367b293736943e92f6a9e98 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8bb3912a3ce86b15842e79d0b421204 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8bb3912a3ce86b15842e79d0b421204"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a> ()</td></tr>
<tr class="memdesc:ac8bb3912a3ce86b15842e79d0b421204 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the entire texture storage_linear with zeros. <br /></td></tr>
<tr class="separator:ac8bb3912a3ce86b15842e79d0b421204 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="memTemplParams" colspan="2">template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a5430e0073bc8a24264b7133f25f0edec">clear</a> (gen_type const &amp;Texel)</td></tr>
<tr class="memdesc:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the entire texture storage_linear with Texel which type must match the texture storage_linear format block size If the type of gen_type doesn't match the type of the texture format, no conversion is performed and the data will be reinterpreted as if is was of the texture format. <a href="#a5430e0073bc8a24264b7133f25f0edec">More...</a><br /></td></tr>
<tr class="separator:a5430e0073bc8a24264b7133f25f0edec inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a54710883dcdf8a8f8f9bfc13e9dd5398"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a54710883dcdf8a8f8f9bfc13e9dd5398">clear</a> (size_type Layer, size_type Face, size_type Level, gen_type const &amp;BlockData)</td></tr>
<tr class="memdesc:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear a specific image of a texture. <br /></td></tr>
<tr class="separator:a54710883dcdf8a8f8f9bfc13e9dd5398 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1df5aef4908916286c693427ae042eca"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a1df5aef4908916286c693427ae042eca">clear</a> (size_type Layer, size_type Face, size_type Level, extent_type const &amp;TexelOffset, extent_type const &amp;TexelExtent, gen_type const &amp;BlockData)</td></tr>
<tr class="memdesc:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear a subset of a specific image of a texture. <br /></td></tr>
<tr class="separator:a1df5aef4908916286c693427ae042eca inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade92aae99ac3524a83809acdfd8c0715 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade92aae99ac3524a83809acdfd8c0715"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ade92aae99ac3524a83809acdfd8c0715">copy</a> (<a class="el" href="a00012.html">texture</a> const &amp;TextureSrc, size_t LayerSrc, size_t FaceSrc, size_t LevelSrc, size_t LayerDst, size_t FaceDst, size_t LevelDst)</td></tr>
<tr class="memdesc:ade92aae99ac3524a83809acdfd8c0715 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy a specific image of a texture. <br /></td></tr>
<tr class="separator:ade92aae99ac3524a83809acdfd8c0715 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace50b0c766f3c82847eda49459eec7e0 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ace50b0c766f3c82847eda49459eec7e0"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ace50b0c766f3c82847eda49459eec7e0">copy</a> (<a class="el" href="a00012.html">texture</a> const &amp;TextureSrc, size_t LayerSrc, size_t FaceSrc, size_t LevelSrc, extent_type const &amp;OffsetSrc, size_t LayerDst, size_t FaceDst, size_t LevelDst, extent_type const &amp;OffsetDst, extent_type const &amp;Extent)</td></tr>
<tr class="memdesc:ace50b0c766f3c82847eda49459eec7e0 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy a subset of a specific image of a texture. <br /></td></tr>
<tr class="separator:ace50b0c766f3c82847eda49459eec7e0 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f2c67dc864c6b6e705710853b5568ef inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f2c67dc864c6b6e705710853b5568ef"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a3f2c67dc864c6b6e705710853b5568ef">data</a> ()</td></tr>
<tr class="memdesc:a3f2c67dc864c6b6e705710853b5568ef inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:a3f2c67dc864c6b6e705710853b5568ef inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="aecfb33a652ea3f984735a031e4af697f"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#aecfb33a652ea3f984735a031e4af697f">data</a> ()</td></tr>
<tr class="memdesc:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:aecfb33a652ea3f984735a031e4af697f inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec236abf7eac8ff4eec54eda033b9288 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec236abf7eac8ff4eec54eda033b9288"></a>
void const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aec236abf7eac8ff4eec54eda033b9288">data</a> () const </td></tr>
<tr class="memdesc:aec236abf7eac8ff4eec54eda033b9288 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:aec236abf7eac8ff4eec54eda033b9288 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8c538fecdc895b20bbd61890bffe0fdb"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type const *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a8c538fecdc895b20bbd61890bffe0fdb">data</a> () const </td></tr>
<tr class="memdesc:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:a8c538fecdc895b20bbd61890bffe0fdb inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76d02b884284dee754400f17bb7f5053 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a76d02b884284dee754400f17bb7f5053"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a76d02b884284dee754400f17bb7f5053">data</a> (size_type Layer, size_type Face, size_type Level)</td></tr>
<tr class="memdesc:a76d02b884284dee754400f17bb7f5053 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:a76d02b884284dee754400f17bb7f5053 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad0d21d1d0e5888e0d546dc585d30249 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad0d21d1d0e5888e0d546dc585d30249"></a>
void const *const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aad0d21d1d0e5888e0d546dc585d30249">data</a> (size_type Layer, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:aad0d21d1d0e5888e0d546dc585d30249 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the beginning of the texture instance data. <br /></td></tr>
<tr class="separator:aad0d21d1d0e5888e0d546dc585d30249 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a42214ff33bec0fa5dd52c2b0df7dcdbe"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a42214ff33bec0fa5dd52c2b0df7dcdbe">data</a> (size_type Layer, size_type Face, size_type Level)</td></tr>
<tr class="memdesc:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:a42214ff33bec0fa5dd52c2b0df7dcdbe inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a272d7f02634851f003d81a25407ba782"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type const *const&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a272d7f02634851f003d81a25407ba782">data</a> (size_type Layer, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer of type genType which size must match the texture format block size. <br /></td></tr>
<tr class="separator:a272d7f02634851f003d81a25407ba782 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6e61de369e994009e36f344f99c15ad inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac6e61de369e994009e36f344f99c15ad"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ac6e61de369e994009e36f344f99c15ad">empty</a> () const </td></tr>
<tr class="memdesc:ac6e61de369e994009e36f344f99c15ad inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return whether the texture instance is empty, no storage_type or description have been assigned to the instance. <br /></td></tr>
<tr class="separator:ac6e61de369e994009e36f344f99c15ad inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9122bf87edd23bd731bd9eaf072e757 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9122bf87edd23bd731bd9eaf072e757"></a>
extent_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aa9122bf87edd23bd731bd9eaf072e757">extent</a> (size_type Level=0) const </td></tr>
<tr class="memdesc:aa9122bf87edd23bd731bd9eaf072e757 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the size of a texture instance: width, height and depth. <br /></td></tr>
<tr class="separator:aa9122bf87edd23bd731bd9eaf072e757 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3914cdf138e9267662ac7147fe71d644 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3914cdf138e9267662ac7147fe71d644"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a3914cdf138e9267662ac7147fe71d644">faces</a> () const </td></tr>
<tr class="memdesc:a3914cdf138e9267662ac7147fe71d644 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <a class="el" href="a00012.html#aa18daf8e8534d4cefabf3b7dfd43a6f3" title="Return the max face of the texture instance, effectively a memory offset to the beginning of the last...">max_face()</a> - <a class="el" href="a00012.html#ae7c1f35cf657c7bbe9eae2b39e44f728" title="Return the base face of the texture instance, effectively a memory offset in the actual texture stora...">base_face()</a> + 1. <br /></td></tr>
<tr class="separator:a3914cdf138e9267662ac7147fe71d644 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad94928ca00873970455c1fb2d3c03fd8 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad94928ca00873970455c1fb2d3c03fd8"></a>
<a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ad94928ca00873970455c1fb2d3c03fd8">format</a> () const </td></tr>
<tr class="memdesc:ad94928ca00873970455c1fb2d3c03fd8 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the texture instance format. <br /></td></tr>
<tr class="separator:ad94928ca00873970455c1fb2d3c03fd8 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac4e6a627c907856620b7eb161c9b85d inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac4e6a627c907856620b7eb161c9b85d"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aac4e6a627c907856620b7eb161c9b85d">layers</a> () const </td></tr>
<tr class="memdesc:aac4e6a627c907856620b7eb161c9b85d inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <a class="el" href="a00012.html#af8ae0072dcfb583fcd278650b3f55ec6" title="Return the max layer of the texture instance, effectively a memory offset to the beginning of the las...">max_layer()</a> - <a class="el" href="a00012.html#a1aeb020d8f82035e607b209c3841dee2" title="Return the base layer of the texture instance, effectively a memory offset in the actual texture stor...">base_layer()</a> + 1. <br /></td></tr>
<tr class="separator:aac4e6a627c907856620b7eb161c9b85d inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b85eb415046f5a31b2d9eff8cefc24c inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9b85eb415046f5a31b2d9eff8cefc24c"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a9b85eb415046f5a31b2d9eff8cefc24c">levels</a> () const </td></tr>
<tr class="memdesc:a9b85eb415046f5a31b2d9eff8cefc24c inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <a class="el" href="a00012.html#ae174e356683cee9bf9d3e11df4d6f78a" title="Return the max level of the texture instance, effectively a memory offset to the beginning of the las...">max_level()</a> - <a class="el" href="a00012.html#a01c07293e367b293736943e92f6a9e98" title="Return the base level of the texture instance, effectively a memory offset in the actual texture stor...">base_level()</a> + 1. <br /></td></tr>
<tr class="separator:a9b85eb415046f5a31b2d9eff8cefc24c inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a643d8893b84d50b7a3c7fc53b218da8a"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">gen_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a643d8893b84d50b7a3c7fc53b218da8a">load</a> (extent_type const &amp;TexelCoord, size_type Layer, size_type Face, size_type Level) const </td></tr>
<tr class="memdesc:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch a texel from a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a643d8893b84d50b7a3c7fc53b218da8a inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa18daf8e8534d4cefabf3b7dfd43a6f3 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa18daf8e8534d4cefabf3b7dfd43a6f3"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#aa18daf8e8534d4cefabf3b7dfd43a6f3">max_face</a> () const </td></tr>
<tr class="memdesc:aa18daf8e8534d4cefabf3b7dfd43a6f3 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the max face of the texture instance, effectively a memory offset to the beginning of the last face in the actual texture storage_type that the texture instance can access. <br /></td></tr>
<tr class="separator:aa18daf8e8534d4cefabf3b7dfd43a6f3 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8ae0072dcfb583fcd278650b3f55ec6 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8ae0072dcfb583fcd278650b3f55ec6"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#af8ae0072dcfb583fcd278650b3f55ec6">max_layer</a> () const </td></tr>
<tr class="memdesc:af8ae0072dcfb583fcd278650b3f55ec6 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the max layer of the texture instance, effectively a memory offset to the beginning of the last layer in the actual texture storage_type that the texture instance can access. <br /></td></tr>
<tr class="separator:af8ae0072dcfb583fcd278650b3f55ec6 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae174e356683cee9bf9d3e11df4d6f78a inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae174e356683cee9bf9d3e11df4d6f78a"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ae174e356683cee9bf9d3e11df4d6f78a">max_level</a> () const </td></tr>
<tr class="memdesc:ae174e356683cee9bf9d3e11df4d6f78a inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the max level of the texture instance, effectively a memory offset to the beginning of the last level in the actual texture storage_type that the texture instance can access. <br /></td></tr>
<tr class="separator:ae174e356683cee9bf9d3e11df4d6f78a inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a503ab01f6c0142145d3434f6924714e7 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a503ab01f6c0142145d3434f6924714e7"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a503ab01f6c0142145d3434f6924714e7">size</a> () const </td></tr>
<tr class="memdesc:a503ab01f6c0142145d3434f6924714e7 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the memory size of a texture instance storage_type in bytes. <br /></td></tr>
<tr class="separator:a503ab01f6c0142145d3434f6924714e7 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="memTemplParams" colspan="2">template&lt;typename genType &gt; </td></tr>
<tr class="memitem:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">size_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a24789b8cce4dcbe8e0d3a47b68447aba">size</a> () const </td></tr>
<tr class="memdesc:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the number of blocks contained in a texture instance storage_type. <a href="#a24789b8cce4dcbe8e0d3a47b68447aba">More...</a><br /></td></tr>
<tr class="separator:a24789b8cce4dcbe8e0d3a47b68447aba inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46f11d7b73797c3e4b9a6da00f505fd8 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46f11d7b73797c3e4b9a6da00f505fd8"></a>
size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a46f11d7b73797c3e4b9a6da00f505fd8">size</a> (size_type Level) const </td></tr>
<tr class="memdesc:a46f11d7b73797c3e4b9a6da00f505fd8 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the memory size of a specific level identified by Level. <br /></td></tr>
<tr class="separator:a46f11d7b73797c3e4b9a6da00f505fd8 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="memTemplParams" colspan="2">template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">size_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a665df3b51266310cd164cd5aa9c6e80e">size</a> (size_type Level) const </td></tr>
<tr class="memdesc:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the memory size of a specific level identified by Level. <a href="#a665df3b51266310cd164cd5aa9c6e80e">More...</a><br /></td></tr>
<tr class="separator:a665df3b51266310cd164cd5aa9c6e80e inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="a290419a437522cfe1981880fbfd9f810"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#a290419a437522cfe1981880fbfd9f810">store</a> (extent_type const &amp;TexelCoord, size_type Layer, size_type Face, size_type Level, gen_type const &amp;Texel)</td></tr>
<tr class="memdesc:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a texel to a texture. The texture format must be uncompressed. <br /></td></tr>
<tr class="separator:a290419a437522cfe1981880fbfd9f810 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="memTemplParams" colspan="2"><a class="anchor" id="aa2c92d09106b13d3d20dd0909ada8a68"></a>
template&lt;typename gen_type &gt; </td></tr>
<tr class="memitem:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#aa2c92d09106b13d3d20dd0909ada8a68">swizzle</a> (gli::swizzles const &amp;Swizzles)</td></tr>
<tr class="memdesc:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reorder the component in texture memory. <br /></td></tr>
<tr class="separator:aa2c92d09106b13d3d20dd0909ada8a68 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59d3d7946e94bc294444c5f55db70c21 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59d3d7946e94bc294444c5f55db70c21"></a>
<a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a59d3d7946e94bc294444c5f55db70c21">target</a> () const </td></tr>
<tr class="memdesc:a59d3d7946e94bc294444c5f55db70c21 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the target of a texture instance. <br /></td></tr>
<tr class="separator:a59d3d7946e94bc294444c5f55db70c21 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9921e1ac4df78bce54d328affd59da28 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9921e1ac4df78bce54d328affd59da28"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a9921e1ac4df78bce54d328affd59da28">texture</a> ()</td></tr>
<tr class="memdesc:a9921e1ac4df78bce54d328affd59da28 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an empty texture instance. <br /></td></tr>
<tr class="separator:a9921e1ac4df78bce54d328affd59da28 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ca26840db935a649290350da2b5f5ca inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a4ca26840db935a649290350da2b5f5ca">texture</a> (<a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a> Target, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, extent_type const &amp;Extent, size_type Layers, size_type Faces, size_type Levels, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a4ca26840db935a649290350da2b5f5ca inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture object and allocate a texture storage for it. <a href="#a4ca26840db935a649290350da2b5f5ca">More...</a><br /></td></tr>
<tr class="separator:a4ca26840db935a649290350da2b5f5ca inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9bbe0e3db3a8e9b7878acf20bc9f4c81 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a9bbe0e3db3a8e9b7878acf20bc9f4c81">texture</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture, <a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a> Target, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, size_type BaseLayer, size_type MaxLayer, size_type BaseFace, size_type MaxFace, size_type BaseLevel, size_type MaxLevel, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a9bbe0e3db3a8e9b7878acf20bc9f4c81 inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture object by sharing an existing texture storage_type from another texture instance. <a href="#a9bbe0e3db3a8e9b7878acf20bc9f4c81">More...</a><br /></td></tr>
<tr class="separator:a9bbe0e3db3a8e9b7878acf20bc9f4c81 inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3efa6c67e681cdb4630d99cbb355aa3d inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#a3efa6c67e681cdb4630d99cbb355aa3d">texture</a> (<a class="el" href="a00012.html">texture</a> const &amp;Texture, <a class="el" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target_type</a> Target, <a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format_type</a> Format, swizzles_type const &amp;Swizzles=swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA))</td></tr>
<tr class="memdesc:a3efa6c67e681cdb4630d99cbb355aa3d inherit pub_methods_a00012"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a texture object by sharing an existing texture storage_type from another texture instance. <a href="#a3efa6c67e681cdb4630d99cbb355aa3d">More...</a><br /></td></tr>
<tr class="separator:a3efa6c67e681cdb4630d99cbb355aa3d inherit pub_methods_a00012"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Cube map array texture. </p>
<p>Definition at line <a class="el" href="a00069_source.html#l00011">11</a> of file <a class="el" href="a00069_source.html">texture_cube_array.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 496 B

View File

@ -1,138 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: clear.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">clear.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Include to copy textures or a subset of either textures.
<a href="#details">More...</a></p>
<p><a href="a00020_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:a00074"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html">gli</a></td></tr>
<tr class="memdesc:a00074"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace where all the classes and functions provided by GLI are exposed. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:af4adb12c1d85d1813e9090f51a40beef"><td class="memTemplParams" colspan="2"><a class="anchor" id="af4adb12c1d85d1813e9090f51a40beef"></a>
template&lt;typename texture_type &gt; </td></tr>
<tr class="memitem:af4adb12c1d85d1813e9090f51a40beef"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00074.html#af4adb12c1d85d1813e9090f51a40beef">clear</a> (texture_type &amp;Texture)</td></tr>
<tr class="memdesc:af4adb12c1d85d1813e9090f51a40beef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear a complete texture. <br /></td></tr>
<tr class="separator:af4adb12c1d85d1813e9090f51a40beef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac47a6798de780ac78bc5ad50d10a19fa"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac47a6798de780ac78bc5ad50d10a19fa"></a>
template&lt;typename texture_type , typename gen_type &gt; </td></tr>
<tr class="memitem:ac47a6798de780ac78bc5ad50d10a19fa"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00074.html#ac47a6798de780ac78bc5ad50d10a19fa">clear</a> (texture_type &amp;Texture, gen_type const &amp;BlockData)</td></tr>
<tr class="memdesc:ac47a6798de780ac78bc5ad50d10a19fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear a complete texture. <br /></td></tr>
<tr class="separator:ac47a6798de780ac78bc5ad50d10a19fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a02577cb30a63914796a13e8ea6af9499"><td class="memTemplParams" colspan="2"><a class="anchor" id="a02577cb30a63914796a13e8ea6af9499"></a>
template&lt;typename texture_type , typename gen_type &gt; </td></tr>
<tr class="memitem:a02577cb30a63914796a13e8ea6af9499"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00074.html#a02577cb30a63914796a13e8ea6af9499">clear</a> (texture_type &amp;Texture, size_t Layer, size_t Face, size_t Level, gen_type const &amp;BlockData)</td></tr>
<tr class="memdesc:a02577cb30a63914796a13e8ea6af9499"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear a specific image of a texture. <br /></td></tr>
<tr class="separator:a02577cb30a63914796a13e8ea6af9499"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Include to copy textures or a subset of either textures. </p>
<p>These operations are performed without memory allocations. </p>
<p>Definition in file <a class="el" href="a00020_source.html">clear.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,144 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: clear.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">clear.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="a00020.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
<div class="line"><a name="l00006"></a><span class="lineno"><a class="line" href="a00074.html"> 6</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="a00074.html">gli</a></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;{</div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texture_type&gt;</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160; <span class="keywordtype">void</span> <a class="code" href="a00074.html#af4adb12c1d85d1813e9090f51a40beef">clear</a>(texture_type&amp; Texture);</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texture_type, <span class="keyword">typename</span> gen_type&gt;</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; <span class="keywordtype">void</span> <a class="code" href="a00074.html#af4adb12c1d85d1813e9090f51a40beef">clear</a>(texture_type&amp; Texture, gen_type <span class="keyword">const</span>&amp; BlockData);</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texture_type, <span class="keyword">typename</span> gen_type&gt;</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordtype">void</span> <a class="code" href="a00074.html#af4adb12c1d85d1813e9090f51a40beef">clear</a>(texture_type&amp; Texture, <span class="keywordtype">size_t</span> Layer, <span class="keywordtype">size_t</span> Face, <span class="keywordtype">size_t</span> Level, gen_type <span class="keyword">const</span>&amp; BlockData);</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="comment">// Clear an entire level of a texture</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texture_type, <span class="keyword">typename</span> gen_type&gt;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordtype">void</span> clear_level(texture_type&amp; Texture, <span class="keywordtype">size_t</span> BaseLevel, gen_type <span class="keyword">const</span>&amp; BlockData);</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="comment">// Clear multiple levels of a texture</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texture_type, <span class="keyword">typename</span> gen_type&gt;</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordtype">void</span> clear_level(texture_type&amp; Texture, <span class="keywordtype">size_t</span> BaseLevel, <span class="keywordtype">size_t</span> LevelCount, gen_type <span class="keyword">const</span>&amp; BlockData);</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="comment">// Clear an entire face of a texture</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texture_type, <span class="keyword">typename</span> gen_type&gt;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordtype">void</span> clear_face(texture_type&amp; Texture, <span class="keywordtype">size_t</span> BaseFace, gen_type <span class="keyword">const</span>&amp; BlockData);</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="comment">// Clear multiple faces of a texture</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texture_type, <span class="keyword">typename</span> gen_type&gt;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordtype">void</span> clear_face(texture_type&amp; Texture, <span class="keywordtype">size_t</span> BaseFace, <span class="keywordtype">size_t</span> FaceCount, gen_type <span class="keyword">const</span>&amp; BlockData);</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="comment">// Clear an entire layer of a texture</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texture_type, <span class="keyword">typename</span> gen_type&gt;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordtype">void</span> clear_layer(texture_type&amp; Texture, <span class="keywordtype">size_t</span> BaseLayer, gen_type <span class="keyword">const</span>&amp; BlockData);</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="comment">// Clear multiple layers of a texture</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texture_type, <span class="keyword">typename</span> gen_type&gt;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">void</span> clear_layer(texture_type&amp; Texture, <span class="keywordtype">size_t</span> BaseLayer, <span class="keywordtype">size_t</span> LayerCount, gen_type <span class="keyword">const</span>&amp; BlockData);</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;}<span class="comment">//namespace gli</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#include &quot;./core/clear.inl&quot;</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div>
<div class="ttc" id="a00074_html"><div class="ttname"><a href="a00074.html">gli</a></div><div class="ttdoc">Namespace where all the classes and functions provided by GLI are exposed. </div><div class="ttdef"><b>Definition:</b> <a href="a00020_source.html#l00006">clear.hpp:6</a></div></div>
<div class="ttc" id="a00074_html_af4adb12c1d85d1813e9090f51a40beef"><div class="ttname"><a href="a00074.html#af4adb12c1d85d1813e9090f51a40beef">gli::clear</a></div><div class="ttdeci">void clear(texture_type &amp;Texture)</div><div class="ttdoc">Clear a complete texture. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,128 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: clear.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li><li class="navelem"><a class="el" href="dir_2c398834837487e57bd8c53ea39543b9.html">core</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">core/clear.hpp</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="preprocessor">#include &quot;convert_func.hpp&quot;</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;</div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00074.html">gli</a>{</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;{</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> textureType, <span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160; <span class="keyword">struct </span><a class="code" href="a00074.html#af4adb12c1d85d1813e9090f51a40beef">clear</a></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160; {</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> call(textureType &amp; Texture, <span class="keyword">typename</span> convert&lt;textureType, T, P&gt;::writeFunc Write, tvec4&lt;T, P&gt; <span class="keyword">const</span> &amp; Color)</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; {</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; GLI_ASSERT(Write);</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; texture <span class="keyword">const</span> ConvertTexel(Texture.target(), Texture.format(), texture::extent_type(1), 1, 1, 1);</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; textureType Texel(ConvertTexel);</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; Write(Texel, <span class="keyword">typename</span> textureType::extent_type(0), 0, 0, 0, Color);</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keywordtype">size_t</span> <span class="keyword">const</span> BlockSize(<a class="code" href="a00074.html#ae8ca05b97f1deac7bf5a50468868a449">block_size</a>(Texture.format()));</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> BlockIndex = 0, BlockCount = Texture.size() / BlockSize; BlockIndex &lt; BlockCount; ++BlockIndex)</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; memcpy(static_cast&lt;std::uint8_t*&gt;(Texture.data()) + BlockSize * BlockIndex, Texel.data(), BlockSize);</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; }</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; };</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}<span class="comment">//namespace detail</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;}<span class="comment">//namespace gli</span></div>
<div class="ttc" id="a00074_html"><div class="ttname"><a href="a00074.html">gli</a></div><div class="ttdoc">Namespace where all the classes and functions provided by GLI are exposed. </div><div class="ttdef"><b>Definition:</b> <a href="a00020_source.html#l00006">clear.hpp:6</a></div></div>
<div class="ttc" id="a00074_html_af4adb12c1d85d1813e9090f51a40beef"><div class="ttname"><a href="a00074.html#af4adb12c1d85d1813e9090f51a40beef">gli::clear</a></div><div class="ttdeci">void clear(texture_type &amp;Texture)</div><div class="ttdoc">Clear a complete texture. </div></div>
<div class="ttc" id="a00074_html_ae8ca05b97f1deac7bf5a50468868a449"><div class="ttname"><a href="a00074.html#ae8ca05b97f1deac7bf5a50468868a449">gli::block_size</a></div><div class="ttdeci">size_t block_size(format Format)</div><div class="ttdoc">Return the size in bytes of a block for a format. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,138 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: comparison.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">comparison.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Include to use operators to compare whether two textures or images are equal.
<a href="#details">More...</a></p>
<p><a href="a00022_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:a00074"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html">gli</a></td></tr>
<tr class="memdesc:a00074"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace where all the classes and functions provided by GLI are exposed. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a7385e5b1d40db9fcbf2b5d645a25d751"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7385e5b1d40db9fcbf2b5d645a25d751"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a7385e5b1d40db9fcbf2b5d645a25d751">operator!=</a> (image const &amp;ImageA, image const &amp;ImageB)</td></tr>
<tr class="memdesc:a7385e5b1d40db9fcbf2b5d645a25d751"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compare two images. Two images are equal when the date is the same. <br /></td></tr>
<tr class="separator:a7385e5b1d40db9fcbf2b5d645a25d751"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d872af1896fb8892f4f858b09deacbb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6d872af1896fb8892f4f858b09deacbb"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a6d872af1896fb8892f4f858b09deacbb">operator!=</a> (texture const &amp;A, texture const &amp;B)</td></tr>
<tr class="memdesc:a6d872af1896fb8892f4f858b09deacbb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compare two textures. Two textures are the same when the data, the format and the targets are the same. <br /></td></tr>
<tr class="separator:a6d872af1896fb8892f4f858b09deacbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f067b84c6811d908d4544bc0dbb2365"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f067b84c6811d908d4544bc0dbb2365"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a0f067b84c6811d908d4544bc0dbb2365">operator==</a> (image const &amp;ImageA, image const &amp;ImageB)</td></tr>
<tr class="memdesc:a0f067b84c6811d908d4544bc0dbb2365"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compare two images. Two images are equal when the date is the same. <br /></td></tr>
<tr class="separator:a0f067b84c6811d908d4544bc0dbb2365"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf88ca5cfb8bb81b8a610f86c8ff712f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf88ca5cfb8bb81b8a610f86c8ff712f"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#aaf88ca5cfb8bb81b8a610f86c8ff712f">operator==</a> (texture const &amp;A, texture const &amp;B)</td></tr>
<tr class="memdesc:aaf88ca5cfb8bb81b8a610f86c8ff712f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compare two textures. Two textures are the same when the data, the format and the targets are the same. <br /></td></tr>
<tr class="separator:aaf88ca5cfb8bb81b8a610f86c8ff712f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Include to use operators to compare whether two textures or images are equal. </p>
<p>Definition in file <a class="el" href="a00022_source.html">comparison.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,135 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: comparison.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">comparison.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="a00022.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00037.html">image.hpp</a>&quot;</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00063.html">texture1d.hpp</a>&quot;</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00064.html">texture1d_array.hpp</a>&quot;</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00065.html">texture2d.hpp</a>&quot;</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00066.html">texture2d_array.hpp</a>&quot;</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00067.html">texture3d.hpp</a>&quot;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00068.html">texture_cube.hpp</a>&quot;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00069.html">texture_cube_array.hpp</a>&quot;</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00074.html">gli</a></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;{</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="a00074.html#a0f067b84c6811d908d4544bc0dbb2365">operator==</a>(image <span class="keyword">const</span>&amp; ImageA, image <span class="keyword">const</span>&amp; ImageB);</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="a00074.html#a7385e5b1d40db9fcbf2b5d645a25d751">operator!=</a>(image <span class="keyword">const</span>&amp; ImageA, image <span class="keyword">const</span>&amp; ImageB);</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="a00074.html#a0f067b84c6811d908d4544bc0dbb2365">operator==</a>(texture <span class="keyword">const</span>&amp; A, texture <span class="keyword">const</span>&amp; B);</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="a00074.html#a7385e5b1d40db9fcbf2b5d645a25d751">operator!=</a>(texture <span class="keyword">const</span>&amp; A, texture <span class="keyword">const</span>&amp; B);</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;}<span class="comment">//namespace gli</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;./core/comparison.inl&quot;</span></div>
<div class="ttc" id="a00074_html_a0f067b84c6811d908d4544bc0dbb2365"><div class="ttname"><a href="a00074.html#a0f067b84c6811d908d4544bc0dbb2365">gli::operator==</a></div><div class="ttdeci">bool operator==(image const &amp;ImageA, image const &amp;ImageB)</div><div class="ttdoc">Compare two images. Two images are equal when the date is the same. </div></div>
<div class="ttc" id="a00068_html"><div class="ttname"><a href="a00068.html">texture_cube.hpp</a></div><div class="ttdoc">Include to use cube map textures. </div></div>
<div class="ttc" id="a00064_html"><div class="ttname"><a href="a00064.html">texture1d_array.hpp</a></div><div class="ttdoc">Include to use 1d array textures. </div></div>
<div class="ttc" id="a00067_html"><div class="ttname"><a href="a00067.html">texture3d.hpp</a></div><div class="ttdoc">Include to use 3d textures. </div></div>
<div class="ttc" id="a00063_html"><div class="ttname"><a href="a00063.html">texture1d.hpp</a></div><div class="ttdoc">Include to use 1d textures. </div></div>
<div class="ttc" id="a00066_html"><div class="ttname"><a href="a00066.html">texture2d_array.hpp</a></div><div class="ttdoc">Include to use 2d array textures. </div></div>
<div class="ttc" id="a00037_html"><div class="ttname"><a href="a00037.html">image.hpp</a></div><div class="ttdoc">Include to use images, a representation of a single texture level. </div></div>
<div class="ttc" id="a00069_html"><div class="ttname"><a href="a00069.html">texture_cube_array.hpp</a></div><div class="ttdoc">Include to use cube map array textures. </div></div>
<div class="ttc" id="a00074_html"><div class="ttname"><a href="a00074.html">gli</a></div><div class="ttdoc">Namespace where all the classes and functions provided by GLI are exposed. </div><div class="ttdef"><b>Definition:</b> <a href="a00020_source.html#l00006">clear.hpp:6</a></div></div>
<div class="ttc" id="a00065_html"><div class="ttname"><a href="a00065.html">texture2d.hpp</a></div><div class="ttdoc">Include to use 2d textures. </div></div>
<div class="ttc" id="a00074_html_a7385e5b1d40db9fcbf2b5d645a25d751"><div class="ttname"><a href="a00074.html#a7385e5b1d40db9fcbf2b5d645a25d751">gli::operator!=</a></div><div class="ttdeci">bool operator!=(image const &amp;ImageA, image const &amp;ImageB)</div><div class="ttdoc">Compare two images. Two images are equal when the date is the same. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,127 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: convert.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">convert.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Include to copy textures, images or a subset of either textures or an images.
<a href="#details">More...</a></p>
<p><a href="a00023_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:a00074"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html">gli</a></td></tr>
<tr class="memdesc:a00074"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace where all the classes and functions provided by GLI are exposed. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a57dd9012c7e2ba938d1db54a3a7869b5"><td class="memTemplParams" colspan="2">template&lt;typename texture_type &gt; </td></tr>
<tr class="memitem:a57dd9012c7e2ba938d1db54a3a7869b5"><td class="memTemplItemLeft" align="right" valign="top">texture_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00074.html#a57dd9012c7e2ba938d1db54a3a7869b5">convert</a> (texture_type const &amp;Texture, format Format)</td></tr>
<tr class="memdesc:a57dd9012c7e2ba938d1db54a3a7869b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert texture data to a new format. <a href="a00074.html#a57dd9012c7e2ba938d1db54a3a7869b5">More...</a><br /></td></tr>
<tr class="separator:a57dd9012c7e2ba938d1db54a3a7869b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Include to copy textures, images or a subset of either textures or an images. </p>
<p>These operations will cause memory allocations. </p>
<p>Definition in file <a class="el" href="a00023_source.html">convert.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,129 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: convert.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">convert.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="a00023.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00063.html">texture1d.hpp</a>&quot;</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00064.html">texture1d_array.hpp</a>&quot;</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00065.html">texture2d.hpp</a>&quot;</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00066.html">texture2d_array.hpp</a>&quot;</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00067.html">texture3d.hpp</a>&quot;</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00068.html">texture_cube.hpp</a>&quot;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00069.html">texture_cube_array.hpp</a>&quot;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00074.html">gli</a></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texture_type&gt;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; texture_type <a class="code" href="a00074.html#a57dd9012c7e2ba938d1db54a3a7869b5">convert</a>(texture_type <span class="keyword">const</span>&amp; Texture, <a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a> Format);</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;}<span class="comment">//namespace gli</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;./core/convert.inl&quot;</span></div>
<div class="ttc" id="a00068_html"><div class="ttname"><a href="a00068.html">texture_cube.hpp</a></div><div class="ttdoc">Include to use cube map textures. </div></div>
<div class="ttc" id="a00074_html_a387137c43ed9616d39ba90e890d181eb"><div class="ttname"><a href="a00074.html#a387137c43ed9616d39ba90e890d181eb">gli::format</a></div><div class="ttdeci">format</div><div class="ttdoc">Texture data format. </div><div class="ttdef"><b>Definition:</b> <a href="a00033_source.html#l00012">format.hpp:12</a></div></div>
<div class="ttc" id="a00064_html"><div class="ttname"><a href="a00064.html">texture1d_array.hpp</a></div><div class="ttdoc">Include to use 1d array textures. </div></div>
<div class="ttc" id="a00067_html"><div class="ttname"><a href="a00067.html">texture3d.hpp</a></div><div class="ttdoc">Include to use 3d textures. </div></div>
<div class="ttc" id="a00063_html"><div class="ttname"><a href="a00063.html">texture1d.hpp</a></div><div class="ttdoc">Include to use 1d textures. </div></div>
<div class="ttc" id="a00066_html"><div class="ttname"><a href="a00066.html">texture2d_array.hpp</a></div><div class="ttdoc">Include to use 2d array textures. </div></div>
<div class="ttc" id="a00069_html"><div class="ttname"><a href="a00069.html">texture_cube_array.hpp</a></div><div class="ttdoc">Include to use cube map array textures. </div></div>
<div class="ttc" id="a00074_html"><div class="ttname"><a href="a00074.html">gli</a></div><div class="ttdoc">Namespace where all the classes and functions provided by GLI are exposed. </div><div class="ttdef"><b>Definition:</b> <a href="a00020_source.html#l00006">clear.hpp:6</a></div></div>
<div class="ttc" id="a00065_html"><div class="ttname"><a href="a00065.html">texture2d.hpp</a></div><div class="ttdoc">Include to use 2d textures. </div></div>
<div class="ttc" id="a00074_html_a57dd9012c7e2ba938d1db54a3a7869b5"><div class="ttname"><a href="a00074.html#a57dd9012c7e2ba938d1db54a3a7869b5">gli::convert</a></div><div class="ttdeci">texture_type convert(texture_type const &amp;Texture, format Format)</div><div class="ttdoc">Convert texture data to a new format. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,873 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: convert_func.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li><li class="navelem"><a class="el" href="dir_2c398834837487e57bd8c53ea39543b9.html">core</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">convert_func.hpp</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="preprocessor">#include &quot;../type.hpp&quot;</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &quot;../texture1d.hpp&quot;</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#include &quot;../texture1d_array.hpp&quot;</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &quot;../texture2d.hpp&quot;</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &quot;../texture2d_array.hpp&quot;</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#include &quot;../texture3d.hpp&quot;</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &quot;../texture_cube.hpp&quot;</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &quot;../texture_cube_array.hpp&quot;</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &lt;glm/gtc/packing.hpp&gt;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;glm/gtc/color_space.hpp&gt;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &lt;limits&gt;</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00074.html">gli</a>{</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;{</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">enum</span> convertMode</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; {</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; CONVERT_MODE_DEFAULT,</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; CONVERT_MODE_CAST,</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; CONVERT_MODE_NORM,</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; CONVERT_MODE_SRGB,</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; CONVERT_MODE_HALF,</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; CONVERT_MODE_RGB9E5,</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; CONVERT_MODE_RG11B10F,</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; CONVERT_MODE_RGB10A2UNORM,</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; CONVERT_MODE_RGB10A2SNORM,</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; CONVERT_MODE_RGB10A2USCALE,</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; CONVERT_MODE_RGB10A2SSCALE,</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; CONVERT_MODE_RGB10A2UINT,</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; CONVERT_MODE_RGB10A2SINT,</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; CONVERT_MODE_44UNORM,</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; CONVERT_MODE_44SCALED,</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; CONVERT_MODE_4444UNORM,</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; CONVERT_MODE_4444SCALED,</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; CONVERT_MODE_565UNORM,</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; CONVERT_MODE_565SCALED,</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; CONVERT_MODE_5551UNORM,</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; CONVERT_MODE_5551SCALED,</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; CONVERT_MODE_332UNORM</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; };</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> textureType, <span class="keyword">typename</span> genType&gt;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">struct </span>accessFunc</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {};</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> genType&gt;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">struct </span>accessFunc&lt;texture1d, genType&gt;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">static</span> genType <a class="code" href="a00074.html#a6ceab391900a9c196b639c66dfe1eb34">load</a>(texture1d <span class="keyword">const</span> &amp; Texture, texture1d::extent_type <span class="keyword">const</span> &amp; TexelCoord, texture1d::size_type Layer, texture1d::size_type Face, texture1d::size_type Level)</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; GLI_ASSERT(Layer == 0 &amp;&amp; Face == 0);</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span> Texture.load&lt;genType&gt;(TexelCoord, Level);</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> store(texture1d &amp; Texture, texture1d::extent_type <span class="keyword">const</span> &amp; TexelCoord, texture1d::size_type Layer, texture1d::size_type Face, texture1d::size_type Level, genType <span class="keyword">const</span> &amp; Texel)</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; GLI_ASSERT(Layer == 0 &amp;&amp; Face == 0);</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; Texture.store&lt;genType&gt;(TexelCoord, Level, Texel);</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; };</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> genType&gt;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">struct </span>accessFunc&lt;texture1d_array, genType&gt;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keyword">static</span> genType <a class="code" href="a00074.html#a6ceab391900a9c196b639c66dfe1eb34">load</a>(texture1d_array <span class="keyword">const</span>&amp; Texture, texture1d_array::extent_type <span class="keyword">const</span>&amp; TexelCoord, texture1d_array::size_type Layer, texture1d_array::size_type Face, texture1d_array::size_type Level)</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; GLI_ASSERT(Face == 0);</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">return</span> Texture.load&lt;genType&gt;(TexelCoord, Layer, Level);</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> store(texture1d_array&amp; Texture, texture1d_array::extent_type <span class="keyword">const</span>&amp; TexelCoord, texture1d_array::size_type Layer, texture1d_array::size_type Face, texture1d_array::size_type Level, genType <span class="keyword">const</span>&amp; Texel)</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; GLI_ASSERT(Face == 0);</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; Texture.store&lt;genType&gt;(TexelCoord, Layer, Level, Texel);</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; };</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> genType&gt;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">struct </span>accessFunc&lt;texture2d, genType&gt;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keyword">static</span> genType <a class="code" href="a00074.html#a6ceab391900a9c196b639c66dfe1eb34">load</a>(texture2d <span class="keyword">const</span> &amp; Texture, texture2d::extent_type <span class="keyword">const</span> &amp; TexelCoord, texture2d::size_type Layer, texture2d::size_type Face, texture2d::size_type Level)</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; GLI_ASSERT(Layer == 0 &amp;&amp; Face == 0);</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">return</span> Texture.load&lt;genType&gt;(TexelCoord, Level);</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> store(texture2d &amp; Texture, texture2d::extent_type <span class="keyword">const</span> &amp; TexelCoord, texture2d::size_type Layer, texture2d::size_type Face, texture2d::size_type Level, genType <span class="keyword">const</span> &amp; Texel)</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; GLI_ASSERT(Layer == 0 &amp;&amp; Face == 0);</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; Texture.store&lt;genType&gt;(TexelCoord, Level, Texel);</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; };</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> genType&gt;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">struct </span>accessFunc&lt;texture2d_array, genType&gt;</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; {</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keyword">static</span> genType <a class="code" href="a00074.html#a6ceab391900a9c196b639c66dfe1eb34">load</a>(texture2d_array <span class="keyword">const</span> &amp; Texture, texture2d_array::extent_type <span class="keyword">const</span> &amp; TexelCoord, texture2d_array::size_type Layer, texture2d_array::size_type Face, texture2d_array::size_type Level)</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; GLI_ASSERT(Face == 0);</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span> Texture.load&lt;genType&gt;(TexelCoord, Layer, Level);</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> store(texture2d_array &amp; Texture, texture2d_array::extent_type <span class="keyword">const</span> &amp; TexelCoord, texture2d_array::size_type Layer, texture2d_array::size_type Face, texture2d_array::size_type Level, genType <span class="keyword">const</span> &amp; Texel)</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; {</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; GLI_ASSERT(Face == 0);</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; Texture.store&lt;genType&gt;(TexelCoord, Layer, Level, Texel);</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; }</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; };</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> genType&gt;</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">struct </span>accessFunc&lt;texture3d, genType&gt;</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keyword">static</span> genType <a class="code" href="a00074.html#a6ceab391900a9c196b639c66dfe1eb34">load</a>(texture3d <span class="keyword">const</span> &amp; Texture, texture3d::extent_type <span class="keyword">const</span> &amp; TexelCoord, texture3d::size_type Layer, texture3d::size_type Face, texture3d::size_type Level)</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; GLI_ASSERT(Layer == 0 &amp;&amp; Face == 0);</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">return</span> Texture.load&lt;genType&gt;(TexelCoord, Level);</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> store(texture3d &amp; Texture, texture3d::extent_type <span class="keyword">const</span> &amp; TexelCoord, texture3d::size_type Layer, texture3d::size_type Face, texture3d::size_type Level, genType <span class="keyword">const</span> &amp; Texel)</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; GLI_ASSERT(Layer == 0 &amp;&amp; Face == 0);</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; Texture.store&lt;genType&gt;(TexelCoord, Level, Texel);</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; };</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> genType&gt;</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keyword">struct </span>accessFunc&lt;texture_cube, genType&gt;</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keyword">static</span> genType <a class="code" href="a00074.html#a6ceab391900a9c196b639c66dfe1eb34">load</a>(texture_cube <span class="keyword">const</span>&amp; Texture, texture_cube::extent_type <span class="keyword">const</span>&amp; TexelCoord, texture_cube::size_type Layer, texture_cube::size_type Face, texture_cube::size_type Level)</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; GLI_ASSERT(Layer == 0);</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">return</span> Texture.load&lt;genType&gt;(TexelCoord, Face, Level);</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> store(texture_cube&amp; Texture, texture_cube::extent_type <span class="keyword">const</span>&amp; TexelCoord, texture_cube::size_type Layer, texture_cube::size_type Face, texture_cube::size_type Level, genType <span class="keyword">const</span>&amp; Texel)</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; {</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; GLI_ASSERT(Layer == 0);</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; Texture.store&lt;genType&gt;(TexelCoord, Face, Level, Texel);</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; };</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> genType&gt;</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keyword">struct </span>accessFunc&lt;texture_cube_array, genType&gt;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keyword">static</span> genType <a class="code" href="a00074.html#a6ceab391900a9c196b639c66dfe1eb34">load</a>(texture_cube_array <span class="keyword">const</span> &amp; Texture, texture_cube_array::extent_type <span class="keyword">const</span> &amp; TexelCoord, texture_cube_array::size_type Layer, texture_cube_array::size_type Face, texture_cube_array::size_type Level)</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span> Texture.<a class="code" href="a00012.html#a643d8893b84d50b7a3c7fc53b218da8a">load</a>&lt;genType&gt;(TexelCoord, Layer, Face, Level);</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> store(texture_cube_array &amp; Texture, texture_cube_array::extent_type <span class="keyword">const</span> &amp; TexelCoord, texture_cube_array::size_type Layer, texture_cube_array::size_type Face, texture_cube_array::size_type Level, genType <span class="keyword">const</span> &amp; Texel)</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; {</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; Texture.store&lt;genType&gt;(TexelCoord, Layer, Face, Level, Texel);</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; }</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; };</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="comment">// convertFunc class</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> textureType, <span class="keyword">typename</span> retType, <span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType, convertMode mode = CONVERT_MODE_CAST, <span class="keywordtype">bool</span> isSamplerFloat = <span class="keyword">false</span>&gt;</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keyword">struct </span>convertFunc</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; {</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">typedef</span> accessFunc&lt;textureType, vecType&lt;T, P&gt; &gt; access;</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keyword">static</span> tvec4&lt;retType, P&gt; fetch(textureType <span class="keyword">const</span> &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level)</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; {</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">return</span> make_vec4&lt;retType, P&gt;(vecType&lt;retType, P&gt;(<a class="code" href="a00074.html#a6ceab391900a9c196b639c66dfe1eb34">access::load</a>(Texture, TexelCoord, Layer, Face, Level)));</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> write(textureType &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level, tvec4&lt;retType, P&gt; <span class="keyword">const</span> &amp; Texel)</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; {</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; access::store(Texture, TexelCoord, Layer, Face, Level, vecType&lt;T, P&gt;(Texel));</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; }</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; };</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> textureType, <span class="keyword">typename</span> retType, <span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType, <span class="keywordtype">bool</span> isSamplerFloat&gt;</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keyword">struct </span>convertFunc&lt;textureType, retType, T, P, vecType, CONVERT_MODE_DEFAULT, isSamplerFloat&gt;</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; {</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keyword">static</span> tvec4&lt;retType, P&gt; fetch(textureType <span class="keyword">const</span> &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level)</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; {</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">return</span> tvec4&lt;retType, P&gt;(0, 0, 0, 1);</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> write(textureType &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level, tvec4&lt;retType, P&gt; <span class="keyword">const</span> &amp; Texel)</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; {}</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; };</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> textureType, <span class="keyword">typename</span> retType, <span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keyword">struct </span>convertFunc&lt;textureType, retType, T, P, vecType, CONVERT_MODE_NORM, true&gt;</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; {</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keyword">typedef</span> accessFunc&lt;textureType, vecType&lt;T, P&gt; &gt; access;</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keyword">static</span> tvec4&lt;retType, P&gt; fetch(textureType <span class="keyword">const</span> &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level)</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; {</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_NORM requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">return</span> make_vec4&lt;retType, P&gt;(compNormalize&lt;retType&gt;(<a class="code" href="a00074.html#a6ceab391900a9c196b639c66dfe1eb34">access::load</a>(Texture, TexelCoord, Layer, Face, Level)));</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> write(textureType &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level, tvec4&lt;retType, P&gt; <span class="keyword">const</span> &amp; Texel)</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; {</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_NORM requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; access::store(Texture, TexelCoord, Layer, Face, Level, compScale&lt;T&gt;(vecType&lt;retType, P&gt;(Texel)));</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; }</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; };</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> textureType, <span class="keyword">typename</span> retType, <span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keyword">struct </span>convertFunc&lt;textureType, retType, T, P, vecType, CONVERT_MODE_SRGB, true&gt;</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; {</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keyword">typedef</span> accessFunc&lt;textureType, vecType&lt;T, P&gt; &gt; access;</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keyword">static</span> tvec4&lt;retType, P&gt; fetch(textureType <span class="keyword">const</span> &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level)</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; {</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_SRGB requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">return</span> make_vec4&lt;retType, P&gt;(convertSRGBToLinear(compNormalize&lt;retType&gt;(<a class="code" href="a00074.html#a6ceab391900a9c196b639c66dfe1eb34">access::load</a>(Texture, TexelCoord, Layer, Face, Level))));</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; }</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> write(textureType &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level, tvec4&lt;retType, P&gt; <span class="keyword">const</span> &amp; Texel)</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; {</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_SRGB requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; access::store(Texture, TexelCoord, Layer, Face, Level, gli::compScale&lt;T&gt;(convertLinearToSRGB(vecType&lt;retType, P&gt;(Texel))));</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; }</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; };</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> textureType, <span class="keyword">typename</span> retType, <span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keyword">struct </span>convertFunc&lt;textureType, retType, T, P, vecType, CONVERT_MODE_RGB9E5, true&gt;</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; {</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keyword">typedef</span> accessFunc&lt;textureType, uint32&gt; access;</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keyword">static</span> tvec4&lt;retType, P&gt; fetch(textureType <span class="keyword">const</span> &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level)</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; {</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_RGB9E5 requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">return</span> tvec4&lt;retType, P&gt;(unpackF3x9_E1x5(<a class="code" href="a00074.html#a6ceab391900a9c196b639c66dfe1eb34">access::load</a>(Texture, TexelCoord, Layer, Face, Level)), <span class="keyword">static_cast&lt;</span>retType<span class="keyword">&gt;</span>(1));</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; }</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> write(textureType &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level, tvec4&lt;retType, P&gt; <span class="keyword">const</span> &amp; Texel)</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; {</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_RGB9E5 requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; access::store(Texture, TexelCoord, Layer, Face, Level, packF3x9_E1x5(tvec3&lt;float, P&gt;(Texel)));</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; };</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> textureType, <span class="keyword">typename</span> retType, <span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keyword">struct </span>convertFunc&lt;textureType, retType, T, P, vecType, CONVERT_MODE_RG11B10F, true&gt;</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; {</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keyword">typedef</span> accessFunc&lt;textureType, uint32&gt; access;</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keyword">static</span> tvec4&lt;retType, P&gt; fetch(textureType <span class="keyword">const</span> &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level)</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; {</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_RG11B10F requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">return</span> tvec4&lt;retType, P&gt;(unpackF2x11_1x10(<a class="code" href="a00074.html#a6ceab391900a9c196b639c66dfe1eb34">access::load</a>(Texture, TexelCoord, Layer, Face, Level)), <span class="keyword">static_cast&lt;</span>retType<span class="keyword">&gt;</span>(1));</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; }</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> write(textureType &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level, tvec4&lt;retType, P&gt; <span class="keyword">const</span> &amp; Texel)</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; {</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_RG11B10F requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; access::store(Texture, TexelCoord, Layer, Face, Level, packF2x11_1x10(tvec3&lt;float, P&gt;(Texel)));</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; }</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; };</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> textureType, <span class="keyword">typename</span> retType, <span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keyword">struct </span>convertFunc&lt;textureType, retType, T, P, vecType, CONVERT_MODE_HALF, true&gt;</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; {</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keyword">typedef</span> accessFunc&lt;textureType, vecType&lt;uint16, P&gt; &gt; access;</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keyword">static</span> tvec4&lt;retType, P&gt; fetch(textureType <span class="keyword">const</span> &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level)</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; {</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_HALF requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">return</span> make_vec4&lt;retType, P&gt;(vecType&lt;retType, P&gt;(unpackHalf(<a class="code" href="a00074.html#a6ceab391900a9c196b639c66dfe1eb34">access::load</a>(Texture, TexelCoord, Layer, Face, Level))));</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; }</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> write(textureType &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level, tvec4&lt;retType, P&gt; <span class="keyword">const</span> &amp; Texel)</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; {</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_HALF requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; access::store(Texture, TexelCoord, Layer, Face, Level, packHalf(vecType&lt;float, P&gt;(Texel)));</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; }</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; };</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> textureType, <span class="keyword">typename</span> retType, <span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keyword">struct </span>convertFunc&lt;textureType, retType, T, P, vecType, CONVERT_MODE_44UNORM, true&gt;</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; {</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keyword">typedef</span> accessFunc&lt;textureType, uint8&gt; access;</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keyword">static</span> tvec4&lt;retType, P&gt; fetch(textureType <span class="keyword">const</span> &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level)</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; {</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_44UNORM requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">return</span> tvec4&lt;retType, P&gt;(tvec2&lt;retType, P&gt;(unpackUnorm2x4(<a class="code" href="a00074.html#a6ceab391900a9c196b639c66dfe1eb34">access::load</a>(Texture, TexelCoord, Layer, Face, Level))), static_cast&lt;retType&gt;(0), <span class="keyword">static_cast&lt;</span>retType<span class="keyword">&gt;</span>(1));</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; }</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> write(textureType &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level, tvec4&lt;retType, P&gt; <span class="keyword">const</span> &amp; Texel)</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; {</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_44UNORM requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; access::store(Texture, TexelCoord, Layer, Face, Level, packUnorm2x4(tvec2&lt;float, P&gt;(Texel)));</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; }</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; };</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> textureType, <span class="keyword">typename</span> retType, <span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keyword">struct </span>convertFunc&lt;textureType, retType, T, P, vecType, CONVERT_MODE_4444UNORM, true&gt;</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; {</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keyword">typedef</span> accessFunc&lt;textureType, uint16&gt; access;</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keyword">static</span> tvec4&lt;retType, P&gt; fetch(textureType <span class="keyword">const</span> &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level)</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; {</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_4444UNORM requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">return</span> tvec4&lt;retType, P&gt;(unpackUnorm4x4(<a class="code" href="a00074.html#a6ceab391900a9c196b639c66dfe1eb34">access::load</a>(Texture, TexelCoord, Layer, Face, Level)));</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; }</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> write(textureType &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level, tvec4&lt;retType, P&gt; <span class="keyword">const</span> &amp; Texel)</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; {</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_4444UNORM requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; access::store(Texture, TexelCoord, Layer, Face, Level, packUnorm4x4(tvec4&lt;float, P&gt;(Texel)));</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; }</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; };</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> textureType, <span class="keyword">typename</span> retType, <span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keyword">struct </span>convertFunc&lt;textureType, retType, T, P, vecType, CONVERT_MODE_565UNORM, true&gt;</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; {</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keyword">typedef</span> accessFunc&lt;textureType, uint16&gt; access;</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keyword">static</span> tvec4&lt;retType, P&gt; fetch(textureType <span class="keyword">const</span> &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level)</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; {</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_565UNORM requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">return</span> tvec4&lt;retType, P&gt;(unpackUnorm1x5_1x6_1x5(<a class="code" href="a00074.html#a6ceab391900a9c196b639c66dfe1eb34">access::load</a>(Texture, TexelCoord, Layer, Face, Level)), <span class="keyword">static_cast&lt;</span>retType<span class="keyword">&gt;</span>(1));</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; }</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> write(textureType &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level, tvec4&lt;retType, P&gt; <span class="keyword">const</span> &amp; Texel)</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; {</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_565UNORM requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; access::store(Texture, TexelCoord, Layer, Face, Level, packUnorm1x5_1x6_1x5(tvec3&lt;float, P&gt;(Texel)));</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; }</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; };</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> textureType, <span class="keyword">typename</span> retType, <span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keyword">struct </span>convertFunc&lt;textureType, retType, T, P, vecType, CONVERT_MODE_5551UNORM, true&gt;</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; {</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keyword">typedef</span> accessFunc&lt;textureType, uint16&gt; access;</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keyword">static</span> tvec4&lt;retType, P&gt; fetch(textureType <span class="keyword">const</span> &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level)</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; {</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_5551UNORM requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">return</span> tvec4&lt;retType, P&gt;(unpackUnorm3x5_1x1(<a class="code" href="a00074.html#a6ceab391900a9c196b639c66dfe1eb34">access::load</a>(Texture, TexelCoord, Layer, Face, Level)));</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> write(textureType &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level, tvec4&lt;retType, P&gt; <span class="keyword">const</span> &amp; Texel)</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; {</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_5551UNORM requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; access::store(Texture, TexelCoord, Layer, Face, Level, packUnorm3x5_1x1(tvec4&lt;float, P&gt;(Texel)));</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; }</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; };</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> textureType, <span class="keyword">typename</span> retType, <span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keyword">struct </span>convertFunc&lt;textureType, retType, T, P, vecType, CONVERT_MODE_332UNORM, true&gt;</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; {</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keyword">typedef</span> accessFunc&lt;textureType, uint8&gt; access;</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keyword">static</span> tvec4&lt;retType, P&gt; fetch(textureType <span class="keyword">const</span> &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level)</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; {</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_332UNORM requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">return</span> tvec4&lt;retType, P&gt;(unpackUnorm2x3_1x2(<a class="code" href="a00074.html#a6ceab391900a9c196b639c66dfe1eb34">access::load</a>(Texture, TexelCoord, Layer, Face, Level)), <span class="keyword">static_cast&lt;</span>retType<span class="keyword">&gt;</span>(1));</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; }</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> write(textureType &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level, tvec4&lt;retType, P&gt; <span class="keyword">const</span> &amp; Texel)</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; {</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_332UNORM requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; access::store(Texture, TexelCoord, Layer, Face, Level, packUnorm2x3_1x2(tvec3&lt;float, P&gt;(Texel)));</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; };</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> textureType, <span class="keyword">typename</span> retType, <span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keyword">struct </span>convertFunc&lt;textureType, retType, T, P, vecType, CONVERT_MODE_RGB10A2UNORM, true&gt;</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; {</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keyword">typedef</span> accessFunc&lt;textureType, uint32&gt; access;</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keyword">static</span> tvec4&lt;retType, P&gt; fetch(textureType <span class="keyword">const</span> &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level)</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; {</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_RGB10A2UNORM requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">return</span> tvec4&lt;retType, P&gt;(unpackUnorm3x10_1x2(<a class="code" href="a00074.html#a6ceab391900a9c196b639c66dfe1eb34">access::load</a>(Texture, TexelCoord, Layer, Face, Level)));</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; }</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> write(textureType &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level, tvec4&lt;retType, P&gt; <span class="keyword">const</span> &amp; Texel)</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; {</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_RGB10A2UNORM requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; access::store(Texture, TexelCoord, Layer, Face, Level, packUnorm3x10_1x2(tvec4&lt;float, P&gt;(Texel)));</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; }</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; };</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> textureType, <span class="keyword">typename</span> retType, <span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keyword">struct </span>convertFunc&lt;textureType, retType, T, P, vecType, CONVERT_MODE_RGB10A2SNORM, true&gt;</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; {</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keyword">typedef</span> accessFunc&lt;textureType, uint32&gt; access;</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keyword">static</span> tvec4&lt;retType, P&gt; fetch(textureType <span class="keyword">const</span> &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level)</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; {</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_RGB10A2SNORM requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">return</span> tvec4&lt;retType, P&gt;(unpackSnorm3x10_1x2(<a class="code" href="a00074.html#a6ceab391900a9c196b639c66dfe1eb34">access::load</a>(Texture, TexelCoord, Layer, Face, Level)));</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> write(textureType &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level, tvec4&lt;retType, P&gt; <span class="keyword">const</span> &amp; Texel)</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; {</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_RGB10A2SNORM requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; access::store(Texture, TexelCoord, Layer, Face, Level, packSnorm3x10_1x2(Texel));</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; }</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; };</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> textureType, <span class="keyword">typename</span> retType, <span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keyword">struct </span>convertFunc&lt;textureType, retType, T, P, vecType, CONVERT_MODE_RGB10A2USCALE, true&gt;</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; {</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keyword">typedef</span> accessFunc&lt;textureType, uint32&gt; access;</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keyword">static</span> tvec4&lt;retType, P&gt; fetch(textureType <span class="keyword">const</span> &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level)</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; {</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_RGB10A2USCALE requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; glm::detail::u10u10u10u2 Unpack;</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; Unpack.pack = <a class="code" href="a00074.html#a6ceab391900a9c196b639c66dfe1eb34">access::load</a>(Texture, TexelCoord, Layer, Face, Level);</div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">return</span> tvec4&lt;retType, P&gt;(Unpack.data.x, Unpack.data.y, Unpack.data.z, Unpack.data.w);</div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; }</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> write(textureType &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level, tvec4&lt;retType, P&gt; <span class="keyword">const</span> &amp; Texel)</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; {</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_RGB10A2USCALE requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; glm::detail::u10u10u10u2 Unpack;</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; Unpack.data.x = <span class="keyword">static_cast&lt;</span>uint<span class="keyword">&gt;</span>(Texel.x);</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; Unpack.data.y = <span class="keyword">static_cast&lt;</span>uint<span class="keyword">&gt;</span>(Texel.y);</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; Unpack.data.z = <span class="keyword">static_cast&lt;</span>uint<span class="keyword">&gt;</span>(Texel.z);</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; Unpack.data.w = <span class="keyword">static_cast&lt;</span>uint<span class="keyword">&gt;</span>(Texel.w);</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; access::store(Texture, TexelCoord, Layer, Face, Level, Unpack.pack);</div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; }</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; };</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> textureType, <span class="keyword">typename</span> retType, <span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keyword">struct </span>convertFunc&lt;textureType, retType, T, P, vecType, CONVERT_MODE_RGB10A2SSCALE, true&gt;</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; {</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keyword">typedef</span> accessFunc&lt;textureType, uint32&gt; access;</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keyword">static</span> tvec4&lt;retType, P&gt; fetch(textureType <span class="keyword">const</span> &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level)</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; {</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_RGB10A2SSCALE requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; glm::detail::i10i10i10i2 Unpack;</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; Unpack.pack = <a class="code" href="a00074.html#a6ceab391900a9c196b639c66dfe1eb34">access::load</a>(Texture, TexelCoord, Layer, Face, Level);</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">return</span> tvec4&lt;retType, P&gt;(Unpack.data.x, Unpack.data.y, Unpack.data.z, Unpack.data.w);</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; }</div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> write(textureType &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level, tvec4&lt;retType, P&gt; <span class="keyword">const</span> &amp; Texel)</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; {</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; static_assert(std::numeric_limits&lt;retType&gt;::is_iec559, <span class="stringliteral">&quot;CONVERT_MODE_RGB10A2SSCALE requires a float sampler&quot;</span>);</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; glm::detail::i10i10i10i2 Unpack;</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; Unpack.data.x = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(Texel.x);</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; Unpack.data.y = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(Texel.y);</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; Unpack.data.z = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(Texel.z);</div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; Unpack.data.w = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(Texel.w);</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; access::store(Texture, TexelCoord, Layer, Face, Level, Unpack.pack);</div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; }</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; };</div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;</div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> textureType, <span class="keyword">typename</span> retType, <span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keyword">struct </span>convertFunc&lt;textureType, retType, T, P, vecType, CONVERT_MODE_RGB10A2UINT, false&gt;</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; {</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keyword">typedef</span> accessFunc&lt;textureType, uint32&gt; access;</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keyword">static</span> tvec4&lt;retType, P&gt; fetch(textureType <span class="keyword">const</span> &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level)</div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; {</div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; static_assert(<a class="code" href="a00074.html#a760a9e4d384a6573979a9c6ffb6c68c1">std::numeric_limits&lt;retType&gt;::is_integer</a>, <span class="stringliteral">&quot;CONVERT_MODE_RGB10A2UINT requires an integer sampler&quot;</span>);</div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">return</span> tvec4&lt;retType, P&gt;(unpackU3x10_1x2(<a class="code" href="a00074.html#a6ceab391900a9c196b639c66dfe1eb34">access::load</a>(Texture, TexelCoord, Layer, Face, Level)));</div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; }</div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;</div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> write(textureType &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level, tvec4&lt;retType, P&gt; <span class="keyword">const</span> &amp; Texel)</div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; {</div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; static_assert(<a class="code" href="a00074.html#a760a9e4d384a6573979a9c6ffb6c68c1">std::numeric_limits&lt;retType&gt;::is_integer</a>, <span class="stringliteral">&quot;CONVERT_MODE_RGB10A2UINT requires an integer sampler&quot;</span>);</div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; access::store(Texture, TexelCoord, Layer, Face, Level, packU3x10_1x2(Texel));</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; }</div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; };</div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;</div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> textureType, <span class="keyword">typename</span> retType, <span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keyword">struct </span>convertFunc&lt;textureType, retType, T, P, vecType, CONVERT_MODE_RGB10A2SINT, false&gt;</div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; {</div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keyword">typedef</span> accessFunc&lt;textureType, uint32&gt; access;</div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;</div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keyword">static</span> tvec4&lt;retType, P&gt; fetch(textureType <span class="keyword">const</span> &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level)</div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; {</div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; static_assert(<a class="code" href="a00074.html#a760a9e4d384a6573979a9c6ffb6c68c1">std::numeric_limits&lt;retType&gt;::is_integer</a>, <span class="stringliteral">&quot;CONVERT_MODE_RGB10A2SINT requires an integer sampler&quot;</span>);</div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">return</span> tvec4&lt;retType, P&gt;(unpackI3x10_1x2(<a class="code" href="a00074.html#a6ceab391900a9c196b639c66dfe1eb34">access::load</a>(Texture, TexelCoord, Layer, Face, Level)));</div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; }</div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;</div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> write(textureType &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level, tvec4&lt;retType, P&gt; <span class="keyword">const</span> &amp; Texel)</div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; {</div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; static_assert(<a class="code" href="a00074.html#a760a9e4d384a6573979a9c6ffb6c68c1">std::numeric_limits&lt;retType&gt;::is_integer</a>, <span class="stringliteral">&quot;CONVERT_MODE_RGB10A2SINT requires an integer sampler&quot;</span>);</div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; access::store(Texture, TexelCoord, Layer, Face, Level, packI3x10_1x2(Texel));</div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; }</div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; };</div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;</div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> textureType, <span class="keyword">typename</span> samplerValType, precision P&gt;</div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keyword">struct </span><a class="code" href="a00074.html#a57dd9012c7e2ba938d1db54a3a7869b5">convert</a></div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; {</div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keyword">typedef</span> glm::tvec4&lt;samplerValType, P&gt;(*fetchFunc)(textureType <span class="keyword">const</span> &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level);</div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keyword">typedef</span> void(*writeFunc)(textureType &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level, glm::tvec4&lt;samplerValType, P&gt; <span class="keyword">const</span> &amp; Texel);</div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;</div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType, convertMode mode&gt;</div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keyword">struct </span>conv</div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; {</div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keyword">static</span> tvec4&lt;samplerValType, P&gt; fetch(textureType <span class="keyword">const</span> &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level)</div>
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; {</div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">return</span> convertFunc&lt;textureType, samplerValType, T, P, vecType, mode, std::numeric_limits&lt;samplerValType&gt;::is_iec559&gt;::fetch(Texture, TexelCoord, Layer, Face, Level);</div>
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;</div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> write(textureType &amp; Texture, <span class="keyword">typename</span> textureType::extent_type <span class="keyword">const</span> &amp; TexelCoord, <span class="keyword">typename</span> textureType::size_type Layer, <span class="keyword">typename</span> textureType::size_type Face, <span class="keyword">typename</span> textureType::size_type Level, tvec4&lt;samplerValType, P&gt; <span class="keyword">const</span> &amp; Texel)</div>
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; {</div>
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; convertFunc&lt;textureType, samplerValType, T, P, vecType, mode, std::numeric_limits&lt;samplerValType&gt;::is_iec559&gt;::write(Texture, TexelCoord, Layer, Face, Level, Texel);</div>
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div>
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; };</div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;</div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keyword">struct </span>func</div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; {</div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; fetchFunc Fetch;</div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; writeFunc Write;</div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; };</div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;</div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="keyword">static</span> func call(<a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a> Format)</div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; {</div>
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keyword">static</span> func Table[] =</div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; {</div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; {conv&lt;u8, tvec2, CONVERT_MODE_44UNORM&gt;::fetch, conv&lt;u8, tvec2, CONVERT_MODE_44UNORM&gt;::write}, <span class="comment">// FORMAT_RG4_UNORM</span></div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_4444UNORM&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_4444UNORM&gt;::write}, <span class="comment">// FORMAT_RGBA4_UNORM</span></div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_4444UNORM&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_4444UNORM&gt;::write}, <span class="comment">// FORMAT_BGRA4_UNORM</span></div>
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; {conv&lt;u8, tvec3, CONVERT_MODE_565UNORM&gt;::fetch, conv&lt;u8, tvec3, CONVERT_MODE_565UNORM&gt;::write}, <span class="comment">// FORMAT_R5G6B5_UNORM</span></div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; {conv&lt;u8, tvec3, CONVERT_MODE_565UNORM&gt;::fetch, conv&lt;u8, tvec3, CONVERT_MODE_565UNORM&gt;::write}, <span class="comment">// FORMAT_B5G6R5_UNORM</span></div>
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_5551UNORM&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_5551UNORM&gt;::write}, <span class="comment">// FORMAT_RGB5A1_UNORM</span></div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_5551UNORM&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_5551UNORM&gt;::write}, <span class="comment">// FORMAT_BGR5A1_UNORM</span></div>
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_5551UNORM&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_5551UNORM&gt;::write}, <span class="comment">// FORMAT_A1RGB5_UNORM</span></div>
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;</div>
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; {conv&lt;u8, tvec1, CONVERT_MODE_NORM&gt;::fetch, conv&lt;u8, tvec1, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_R8_UNORM</span></div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; {conv&lt;i8, tvec1, CONVERT_MODE_NORM&gt;::fetch, conv&lt;i8, tvec1, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_R8_SNORM</span></div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; {conv&lt;u8, tvec1, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u8, tvec1, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_R8_USCALED</span></div>
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; {conv&lt;i8, tvec1, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i8, tvec1, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_R8_SSCALED</span></div>
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; {conv&lt;u8, tvec1, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u8, tvec1, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_R8_UINT</span></div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; {conv&lt;i8, tvec1, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i8, tvec1, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_R8_SINT</span></div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; {conv&lt;u8, tvec1, CONVERT_MODE_SRGB&gt;::fetch, conv&lt;u8, tvec1, CONVERT_MODE_SRGB&gt;::write}, <span class="comment">// FORMAT_R8_SRGB</span></div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;</div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; {conv&lt;u8, tvec2, CONVERT_MODE_NORM&gt;::fetch, conv&lt;u8, tvec2, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_RG8_UNORM</span></div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; {conv&lt;i8, tvec2, CONVERT_MODE_NORM&gt;::fetch, conv&lt;i8, tvec2, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_RG8_SNORM</span></div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; {conv&lt;u8, tvec2, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u8, tvec2, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RG8_USCALED</span></div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; {conv&lt;i8, tvec2, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i8, tvec2, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RG8_SSCALED</span></div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; {conv&lt;u8, tvec2, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u8, tvec2, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RG8_UINT</span></div>
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; {conv&lt;i8, tvec2, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i8, tvec2, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RG8_SINT</span></div>
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; {conv&lt;u8, tvec2, CONVERT_MODE_SRGB&gt;::fetch, conv&lt;u8, tvec2, CONVERT_MODE_SRGB&gt;::write}, <span class="comment">// FORMAT_RG8_SRGB</span></div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;</div>
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; {conv&lt;u8, tvec3, CONVERT_MODE_NORM&gt;::fetch, conv&lt;u8, tvec3, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_RGB8_UNORM</span></div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; {conv&lt;i8, tvec3, CONVERT_MODE_NORM&gt;::fetch, conv&lt;i8, tvec3, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_RGB8_SNORM</span></div>
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; {conv&lt;u8, tvec3, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u8, tvec3, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGB8_USCALED</span></div>
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; {conv&lt;i8, tvec3, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i8, tvec3, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGB8_SSCALED</span></div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; {conv&lt;u8, tvec3, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u8, tvec3, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGB8_UINT</span></div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; {conv&lt;i8, tvec3, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i8, tvec3, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGB8_SINT</span></div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; {conv&lt;u8, tvec3, CONVERT_MODE_SRGB&gt;::fetch, conv&lt;u8, tvec3, CONVERT_MODE_SRGB&gt;::write}, <span class="comment">// FORMAT_RGB8_SRGB</span></div>
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;</div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; {conv&lt;u8, tvec3, CONVERT_MODE_NORM&gt;::fetch, conv&lt;u8, tvec3, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_BGR8_UNORM</span></div>
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; {conv&lt;i8, tvec3, CONVERT_MODE_NORM&gt;::fetch, conv&lt;i8, tvec3, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_BGR8_SNORM</span></div>
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; {conv&lt;u8, tvec3, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u8, tvec3, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_BGR8_USCALED</span></div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; {conv&lt;i8, tvec3, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i8, tvec3, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_BGR8_SSCALED</span></div>
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; {conv&lt;u32, tvec3, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u32, tvec3, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_BGR8_UINT</span></div>
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; {conv&lt;i32, tvec3, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i32, tvec3, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_BGR8_SINT</span></div>
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; {conv&lt;u8, tvec3, CONVERT_MODE_SRGB&gt;::fetch, conv&lt;u8, tvec3, CONVERT_MODE_SRGB&gt;::write}, <span class="comment">// FORMAT_BGR8_SRGB</span></div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;</div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_NORM&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_RGBA8_UNORM</span></div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; {conv&lt;i8, tvec4, CONVERT_MODE_NORM&gt;::fetch, conv&lt;i8, tvec4, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_RGBA8_SNORM</span></div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGBA8_USCALED</span></div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; {conv&lt;i8, tvec4, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i8, tvec4, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGBA8_SSCALED</span></div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGBA8_UINT</span></div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; {conv&lt;i8, tvec4, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i8, tvec4, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGBA8_SINT</span></div>
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_SRGB&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_SRGB&gt;::write}, <span class="comment">// FORMAT_RGBA8_SRGB</span></div>
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;</div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_NORM&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_BGRA8_UNORM</span></div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; {conv&lt;i8, tvec4, CONVERT_MODE_NORM&gt;::fetch, conv&lt;i8, tvec4, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_BGRA8_SNORM</span></div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_BGRA8_USCALED</span></div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; {conv&lt;i8, tvec4, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i8, tvec4, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_BGRA8_SSCALED</span></div>
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_BGRA8_UINT</span></div>
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; {conv&lt;i8, tvec4, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i8, tvec4, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_BGRA8_SINT</span></div>
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_SRGB&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_SRGB&gt;::write}, <span class="comment">// FORMAT_BGRA8_SRGB</span></div>
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;</div>
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_NORM&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_ABGR8_UNORM</span></div>
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; {conv&lt;i8, tvec4, CONVERT_MODE_NORM&gt;::fetch, conv&lt;i8, tvec4, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_ABGR8_SNORM</span></div>
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_ABGR8_USCALED</span></div>
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; {conv&lt;i8, tvec4, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i8, tvec4, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_ABGR8_SSCALED</span></div>
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_ABGR8_UINT</span></div>
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; {conv&lt;i8, tvec4, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i8, tvec4, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_ABGR8_SINT</span></div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_SRGB&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_SRGB&gt;::write}, <span class="comment">// FORMAT_ABGR8_SRGB</span></div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;</div>
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_RGB10A2UNORM&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_RGB10A2UNORM&gt;::write}, <span class="comment">// FORMAT_RGB10A2_UNORM</span></div>
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; {conv&lt;i8, tvec4, CONVERT_MODE_RGB10A2SNORM&gt;::fetch, conv&lt;i8, tvec4, CONVERT_MODE_RGB10A2SNORM&gt;::write}, <span class="comment">// FORMAT_RGB10A2_SNORM</span></div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_RGB10A2USCALE&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_RGB10A2USCALE&gt;::write}, <span class="comment">// FORMAT_RGB10A2_USCALED</span></div>
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; {conv&lt;i8, tvec4, CONVERT_MODE_RGB10A2SSCALE&gt;::fetch, conv&lt;i8, tvec4, CONVERT_MODE_RGB10A2SSCALE&gt;::write}, <span class="comment">// FORMAT_RGB10A2_SSCALED</span></div>
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_RGB10A2UINT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_RGB10A2UINT&gt;::write}, <span class="comment">// FORMAT_RGB10A2_UINT</span></div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; {conv&lt;i8, tvec4, CONVERT_MODE_RGB10A2SINT&gt;::fetch, conv&lt;i8, tvec4, CONVERT_MODE_RGB10A2SINT&gt;::write}, <span class="comment">// FORMAT_RGB10A2_SINT</span></div>
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;</div>
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_RGB10A2UNORM&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_RGB10A2UNORM&gt;::write}, <span class="comment">// FORMAT_BGR10A2_UNORM</span></div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; {conv&lt;i8, tvec4, CONVERT_MODE_RGB10A2SNORM&gt;::fetch, conv&lt;i8, tvec4, CONVERT_MODE_RGB10A2SNORM&gt;::write}, <span class="comment">// FORMAT_BGR10A2_SNORM</span></div>
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_RGB10A2USCALE&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_RGB10A2USCALE&gt;::write}, <span class="comment">// FORMAT_BGR10A2_USCALED</span></div>
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; {conv&lt;i8, tvec4, CONVERT_MODE_RGB10A2SSCALE&gt;::fetch, conv&lt;i8, tvec4, CONVERT_MODE_RGB10A2SSCALE&gt;::write}, <span class="comment">// FORMAT_BGR10A2_SSCALED</span></div>
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_RGB10A2UINT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_RGB10A2UINT&gt;::write}, <span class="comment">// FORMAT_BGR10A2_UINT</span></div>
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; {conv&lt;i8, tvec4, CONVERT_MODE_RGB10A2SINT&gt;::fetch, conv&lt;i8, tvec4, CONVERT_MODE_RGB10A2SINT&gt;::write}, <span class="comment">// FORMAT_BGR10A2_SINT</span></div>
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;</div>
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; {conv&lt;u16, tvec1, CONVERT_MODE_NORM&gt;::fetch, conv&lt;u16, tvec1, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_R16_UNORM_PACK16</span></div>
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; {conv&lt;i16, tvec1, CONVERT_MODE_NORM&gt;::fetch, conv&lt;i16, tvec1, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_R16_SNORM_PACK16</span></div>
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; {conv&lt;u16, tvec1, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u16, tvec1, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_R16_USCALED_PACK16</span></div>
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; {conv&lt;i16, tvec1, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i16, tvec1, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_R16_SSCALED_PACK16</span></div>
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; {conv&lt;u16, tvec1, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u16, tvec1, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_R16_UINT_PACK16</span></div>
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; {conv&lt;i16, tvec1, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i16, tvec1, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_R16_SINT_PACK16</span></div>
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; {conv&lt;u16, tvec1, CONVERT_MODE_HALF&gt;::fetch, conv&lt;u16, tvec1, CONVERT_MODE_HALF&gt;::write}, <span class="comment">// FORMAT_R16_SFLOAT_PACK16</span></div>
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160;</div>
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; {conv&lt;u16, tvec2, CONVERT_MODE_NORM&gt;::fetch, conv&lt;u16, tvec2, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_RG16_UNORM_PACK16</span></div>
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; {conv&lt;i16, tvec2, CONVERT_MODE_NORM&gt;::fetch, conv&lt;i16, tvec2, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_RG16_SNORM_PACK16</span></div>
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; {conv&lt;u16, tvec2, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u16, tvec2, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RG16_USCALED_PACK16</span></div>
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; {conv&lt;i16, tvec2, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i16, tvec2, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RG16_SSCALED_PACK16</span></div>
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; {conv&lt;u16, tvec2, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u16, tvec2, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RG16_UINT_PACK16</span></div>
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; {conv&lt;i16, tvec2, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i16, tvec2, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RG16_SINT_PACK16</span></div>
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; {conv&lt;u16, tvec2, CONVERT_MODE_HALF&gt;::fetch, conv&lt;u16, tvec2, CONVERT_MODE_HALF&gt;::write}, <span class="comment">// FORMAT_RG16_SFLOAT_PACK16</span></div>
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;</div>
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; {conv&lt;u16, tvec3, CONVERT_MODE_NORM&gt;::fetch, conv&lt;u16, tvec3, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_RGB16_UNORM_PACK16</span></div>
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; {conv&lt;i16, tvec3, CONVERT_MODE_NORM&gt;::fetch, conv&lt;i16, tvec3, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_RGB16_SNORM_PACK16</span></div>
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; {conv&lt;u16, tvec3, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u16, tvec3, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGB16_USCALED_PACK16</span></div>
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; {conv&lt;i16, tvec3, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i16, tvec3, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGB16_SSCALED_PACK16</span></div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; {conv&lt;u16, tvec3, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u16, tvec3, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGB16_UINT_PACK16</span></div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; {conv&lt;i16, tvec3, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i16, tvec3, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGB16_SINT_PACK16</span></div>
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; {conv&lt;u16, tvec3, CONVERT_MODE_HALF&gt;::fetch, conv&lt;u16, tvec3, CONVERT_MODE_HALF&gt;::write}, <span class="comment">// FORMAT_RGB16_SFLOAT_PACK16</span></div>
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;</div>
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; {conv&lt;u16, tvec4, CONVERT_MODE_NORM&gt;::fetch, conv&lt;u16, tvec4, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_RGBA16_UNORM_PACK16</span></div>
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; {conv&lt;i16, tvec4, CONVERT_MODE_NORM&gt;::fetch, conv&lt;i16, tvec4, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_RGBA16_SNORM_PACK16</span></div>
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; {conv&lt;u16, tvec4, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u16, tvec4, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGBA16_USCALED_PACK16</span></div>
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; {conv&lt;i16, tvec4, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i16, tvec4, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGBA16_SSCALED_PACK16</span></div>
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; {conv&lt;u16, tvec4, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u16, tvec4, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGBA16_UINT_PACK16</span></div>
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; {conv&lt;i16, tvec4, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i16, tvec4, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGBA16_SINT_PACK16</span></div>
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; {conv&lt;u16, tvec4, CONVERT_MODE_HALF&gt;::fetch, conv&lt;u16, tvec4, CONVERT_MODE_HALF&gt;::write}, <span class="comment">// FORMAT_RGBA16_SFLOAT_PACK16</span></div>
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;</div>
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; {conv&lt;u32, tvec1, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u32, tvec1, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_R32_UINT_PACK32</span></div>
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; {conv&lt;i32, tvec1, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i32, tvec1, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_R32_SINT_PACK32</span></div>
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; {conv&lt;f32, tvec1, CONVERT_MODE_CAST&gt;::fetch, conv&lt;f32, tvec1, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_R32_SFLOAT_PACK32</span></div>
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160;</div>
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; {conv&lt;u32, tvec2, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u32, tvec2, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RG32_UINT_PACK32</span></div>
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; {conv&lt;i32, tvec2, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i32, tvec2, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RG32_SINT_PACK32</span></div>
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; {conv&lt;f32, tvec2, CONVERT_MODE_CAST&gt;::fetch, conv&lt;f32, tvec2, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RG32_SFLOAT_PACK32</span></div>
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;</div>
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; {conv&lt;u32, tvec3, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u32, tvec3, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGB32_UINT_PACK32</span></div>
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; {conv&lt;i32, tvec3, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i32, tvec3, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGB32_SINT_PACK32</span></div>
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; {conv&lt;f32, tvec3, CONVERT_MODE_CAST&gt;::fetch, conv&lt;f32, tvec3, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGB32_SFLOAT_PACK32</span></div>
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;</div>
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; {conv&lt;u32, tvec4, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u32, tvec4, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGBA32_UINT_PACK32</span></div>
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; {conv&lt;i32, tvec4, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i32, tvec4, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGBA32_SINT_PACK32</span></div>
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; {conv&lt;f32, tvec4, CONVERT_MODE_CAST&gt;::fetch, conv&lt;f32, tvec4, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGBA32_SFLOAT_PACK32</span></div>
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;</div>
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; {conv&lt;u64, tvec1, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u64, tvec1, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_R64_UINT_PACK64</span></div>
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; {conv&lt;i64, tvec1, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i64, tvec1, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_R64_SINT_PACK64</span></div>
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; {conv&lt;f64, tvec1, CONVERT_MODE_CAST&gt;::fetch, conv&lt;f64, tvec1, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_R64_SFLOAT_PACK64</span></div>
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;</div>
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; {conv&lt;u64, tvec2, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u64, tvec2, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RG64_UINT_PACK64</span></div>
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; {conv&lt;i64, tvec2, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i64, tvec2, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RG64_SINT_PACK64</span></div>
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; {conv&lt;f64, tvec2, CONVERT_MODE_CAST&gt;::fetch, conv&lt;f64, tvec2, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RG64_SFLOAT_PACK64</span></div>
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;</div>
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; {conv&lt;u64, tvec3, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u64, tvec3, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGB64_UINT_PACK64</span></div>
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; {conv&lt;i64, tvec3, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i64, tvec3, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGB64_SINT_PACK64</span></div>
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; {conv&lt;f64, tvec3, CONVERT_MODE_CAST&gt;::fetch, conv&lt;f64, tvec3, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGB64_SFLOAT_PACK64</span></div>
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;</div>
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; {conv&lt;u64, tvec4, CONVERT_MODE_CAST&gt;::fetch, conv&lt;u64, tvec4, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGBA64_UINT_PACK64</span></div>
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; {conv&lt;i64, tvec4, CONVERT_MODE_CAST&gt;::fetch, conv&lt;i64, tvec4, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGBA64_SINT_PACK64</span></div>
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; {conv&lt;f64, tvec4, CONVERT_MODE_CAST&gt;::fetch, conv&lt;f64, tvec4, CONVERT_MODE_CAST&gt;::write}, <span class="comment">// FORMAT_RGBA64_SFLOAT_PACK64</span></div>
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;</div>
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; {conv&lt;u32, tvec1, CONVERT_MODE_RG11B10F&gt;::fetch, conv&lt;u32, tvec1, CONVERT_MODE_RG11B10F&gt;::write}, <span class="comment">// FORMAT_RG11B10_UFLOAT</span></div>
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; {conv&lt;u32, tvec1, CONVERT_MODE_RGB9E5&gt;::fetch, conv&lt;u32, tvec1, CONVERT_MODE_RGB9E5&gt;::write}, <span class="comment">// FORMAT_RGB9E5_UFLOAT</span></div>
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;</div>
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; {conv&lt;u16, tvec1, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u16, tvec1, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_D16_UNORM_PACK16</span></div>
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; {conv&lt;u32, tvec1, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u32, tvec1, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_D24_UNORM</span></div>
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; {conv&lt;float, tvec1, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;float, tvec1, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_D32_SFLOAT_PACK32</span></div>
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; {conv&lt;u8, tvec1, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec1, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_S8_UINT_PACK8</span></div>
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; {conv&lt;u16, tvec2, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u16, tvec2, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_D16_UNORM_S8_UINT_PACK32</span></div>
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; {conv&lt;u32, tvec2, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u32, tvec2, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_D24_UNORM_S8_UINT_PACK32</span></div>
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; {conv&lt;u32, tvec2, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u32, tvec2, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_D32_SFLOAT_S8_UINT_PACK64</span></div>
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160;</div>
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; {conv&lt;u8, tvec3, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec3, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGB_DXT1_UNORM_BLOCK8</span></div>
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; {conv&lt;u8, tvec3, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec3, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGB_DXT1_SRGB_BLOCK8</span></div>
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGBA_DXT1_UNORM_BLOCK8</span></div>
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGBA_DXT1_SRGB_BLOCK8</span></div>
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGBA_DXT3_UNORM_BLOCK16</span></div>
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGBA_DXT3_SRGB_BLOCK16</span></div>
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGBA_DXT5_UNORM_BLOCK16</span></div>
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGBA_DXT5_SRGB_BLOCK16</span></div>
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; {conv&lt;u8, tvec1, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec1, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_R_ATI1N_UNORM_BLOCK8</span></div>
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; {conv&lt;u8, tvec1, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;i8, tvec1, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_R_ATI1N_SNORM_BLOCK8</span></div>
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; {conv&lt;u8, tvec2, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec2, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RG_ATI2N_UNORM_BLOCK16</span></div>
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; {conv&lt;u8, tvec2, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;i8, tvec2, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RG_ATI2N_SNORM_BLOCK16</span></div>
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; {conv&lt;float, tvec3, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;float, tvec3, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGB_BP_UFLOAT_BLOCK16</span></div>
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; {conv&lt;float, tvec3, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;float, tvec3, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGB_BP_SFLOAT_BLOCK16</span></div>
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGBA_BP_UNORM_BLOCK16</span></div>
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGBA_BP_SRGB_BLOCK16</span></div>
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;</div>
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; {conv&lt;u8, tvec3, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec3, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGB_ETC2_UNORM_BLOCK8</span></div>
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; {conv&lt;u8, tvec3, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec3, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGB_ETC2_SRGB_BLOCK8</span></div>
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGBA_ETC2_A1_UNORM_BLOCK8</span></div>
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGBA_ETC2_A1_SRGB_BLOCK8</span></div>
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGBA_ETC2_UNORM_BLOCK16</span></div>
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGBA_ETC2_SRGB_BLOCK16</span></div>
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; {conv&lt;u8, tvec1, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec1, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_R_EAC_UNORM_BLOCK8</span></div>
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; {conv&lt;u8, tvec1, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec1, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_R_EAC_SNORM_BLOCK8</span></div>
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; {conv&lt;u8, tvec2, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec2, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RG_EAC_UNORM_BLOCK16</span></div>
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; {conv&lt;u8, tvec2, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec2, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RG_EAC_SNORM_BLOCK16</span></div>
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;</div>
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_4x4_UNORM</span></div>
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_4x4_SRGB</span></div>
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_5x4_UNORM</span></div>
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_5x4_SRGB</span></div>
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_5x5_UNORM</span></div>
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_5x5_SRGB</span></div>
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_6x5_UNORM</span></div>
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_6x5_SRGB</span></div>
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_6x6_UNORM</span></div>
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_6x6_SRGB</span></div>
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_8x5_UNORM</span></div>
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_8x5_SRGB</span></div>
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_8x6_UNORM</span></div>
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_8x6_SRGB</span></div>
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_8x8_UNORM</span></div>
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_8x8_SRGB</span></div>
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_10x5_UNORM</span></div>
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_10x5_SRGB</span></div>
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_10x6_UNORM</span></div>
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_10x6_SRGB</span></div>
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_10x8_UNORM</span></div>
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_10x8_SRGB</span></div>
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_10x10_UNORM</span></div>
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_10x10_SRGB</span></div>
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_12x10_UNORM</span></div>
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_12x10_SRGB</span></div>
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_12x12_UNORM</span></div>
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_ASTC_12x12_SRGB</span></div>
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;</div>
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; {conv&lt;u8, tvec3, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec3, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGB_PVRTC1_8X8_UNORM_BLOCK32</span></div>
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; {conv&lt;u8, tvec3, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec3, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGB_PVRTC1_8X8_SRGB_BLOCK32</span></div>
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; {conv&lt;u8, tvec3, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec3, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGB_PVRTC1_16X8_UNORM_BLOCK32</span></div>
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; {conv&lt;u8, tvec3, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec3, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGB_PVRTC1_16X8_SRGB_BLOCK32</span></div>
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGBA_PVRTC1_8X8_UNORM_BLOCK32</span></div>
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGBA_PVRTC1_8X8_SRGB_BLOCK32</span></div>
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGBA_PVRTC1_16X8_UNORM_BLOCK32</span></div>
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGBA_PVRTC1_16X8_SRGB_BLOCK32</span></div>
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGBA_PVRTC2_4X4_UNORM_BLOCK8</span></div>
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGBA_PVRTC2_4X4_SRGB_BLOCK8</span></div>
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGBA_PVRTC2_8X4_UNORM_BLOCK8</span></div>
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGBA_PVRTC2_8X4_SRGB_BLOCK8</span></div>
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160;</div>
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; {conv&lt;u8, tvec3, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec3, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGB_ETC_UNORM_BLOCK8</span></div>
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; {conv&lt;u8, tvec3, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec3, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGB_ATC_UNORM_BLOCK8</span></div>
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGBA_ATCA_UNORM_BLOCK16</span></div>
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_DEFAULT&gt;::write}, <span class="comment">// FORMAT_RGBA_ATCI_UNORM_BLOCK16</span></div>
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160;</div>
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; {conv&lt;u8, tvec1, CONVERT_MODE_NORM&gt;::fetch, conv&lt;u8, tvec1, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_L8_UNORM_PACK8</span></div>
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; {conv&lt;u8, tvec1, CONVERT_MODE_NORM&gt;::fetch, conv&lt;u8, tvec1, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_A8_UNORM_PACK8</span></div>
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; {conv&lt;u8, tvec2, CONVERT_MODE_NORM&gt;::fetch, conv&lt;u8, tvec2, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_LA8_UNORM_PACK8</span></div>
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; {conv&lt;u16, tvec1, CONVERT_MODE_NORM&gt;::fetch, conv&lt;u16, tvec1, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_L16_UNORM_PACK16</span></div>
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; {conv&lt;u16, tvec1, CONVERT_MODE_NORM&gt;::fetch, conv&lt;u16, tvec1, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_A16_UNORM_PACK16</span></div>
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; {conv&lt;u16, tvec2, CONVERT_MODE_NORM&gt;::fetch, conv&lt;u16, tvec2, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_LA16_UNORM_PACK16</span></div>
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160;</div>
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_NORM&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_NORM&gt;::write}, <span class="comment">// FORMAT_BGRX8_UNORM</span></div>
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; {conv&lt;u8, tvec4, CONVERT_MODE_SRGB&gt;::fetch, conv&lt;u8, tvec4, CONVERT_MODE_SRGB&gt;::write}, <span class="comment">// FORMAT_BGRX8_SRGB</span></div>
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;</div>
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; {conv&lt;u8, tvec3, CONVERT_MODE_332UNORM&gt;::fetch, conv&lt;u8, tvec3, CONVERT_MODE_332UNORM&gt;::write} <span class="comment">// FORMAT_RG3B2_UNORM</span></div>
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; };</div>
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; static_assert(<span class="keyword">sizeof</span>(Table) / <span class="keyword">sizeof</span>(Table[0]) == FORMAT_COUNT, <span class="stringliteral">&quot;Texel functions need to be updated&quot;</span>);</div>
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;</div>
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keywordflow">return</span> Table[Format - FORMAT_FIRST];</div>
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; }</div>
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; };</div>
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160;}<span class="comment">//namespace detail</span></div>
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160;}<span class="comment">//namespace gli</span></div>
<div class="ttc" id="a00012_html_a643d8893b84d50b7a3c7fc53b218da8a"><div class="ttname"><a href="a00012.html#a643d8893b84d50b7a3c7fc53b218da8a">gli::texture::load</a></div><div class="ttdeci">gen_type load(extent_type const &amp;TexelCoord, size_type Layer, size_type Face, size_type Level) const </div><div class="ttdoc">Fetch a texel from a texture. The texture format must be uncompressed. </div></div>
<div class="ttc" id="a00074_html_a387137c43ed9616d39ba90e890d181eb"><div class="ttname"><a href="a00074.html#a387137c43ed9616d39ba90e890d181eb">gli::format</a></div><div class="ttdeci">format</div><div class="ttdoc">Texture data format. </div><div class="ttdef"><b>Definition:</b> <a href="a00033_source.html#l00012">format.hpp:12</a></div></div>
<div class="ttc" id="a00074_html_a760a9e4d384a6573979a9c6ffb6c68c1"><div class="ttname"><a href="a00074.html#a760a9e4d384a6573979a9c6ffb6c68c1">gli::is_integer</a></div><div class="ttdeci">bool is_integer(format Format)</div><div class="ttdoc">Evaluate whether the format is an integer format. </div></div>
<div class="ttc" id="a00074_html_a6ceab391900a9c196b639c66dfe1eb34"><div class="ttname"><a href="a00074.html#a6ceab391900a9c196b639c66dfe1eb34">gli::load</a></div><div class="ttdeci">texture load(char const *Path)</div><div class="ttdoc">Loads a texture storage_linear from file. </div></div>
<div class="ttc" id="a00074_html"><div class="ttname"><a href="a00074.html">gli</a></div><div class="ttdoc">Namespace where all the classes and functions provided by GLI are exposed. </div><div class="ttdef"><b>Definition:</b> <a href="a00020_source.html#l00006">clear.hpp:6</a></div></div>
<div class="ttc" id="a00074_html_a57dd9012c7e2ba938d1db54a3a7869b5"><div class="ttname"><a href="a00074.html#a57dd9012c7e2ba938d1db54a3a7869b5">gli::convert</a></div><div class="ttdeci">texture_type convert(texture_type const &amp;Texture, format Format)</div><div class="ttdoc">Convert texture data to a new format. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,188 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: coord.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li><li class="navelem"><a class="el" href="dir_2c398834837487e57bd8c53ea39543b9.html">core</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">coord.hpp</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="preprocessor">#include &quot;../type.hpp&quot;</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;</div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00074.html">gli</a>{</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;{</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160; <span class="keyword">inline</span> vecType&lt;bool, P&gt; in_interval(vecType&lt;T, P&gt; <span class="keyword">const</span>&amp; Value, vecType&lt;T, P&gt; <span class="keyword">const</span>&amp; Min, vecType&lt;T, P&gt; <span class="keyword">const</span>&amp; Max)</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160; {</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; <span class="keywordflow">return</span> greaterThanEqual(Value, Min) &amp;&amp; lessThanEqual(Value, Max);</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; }</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> extent_type, <span class="keyword">typename</span> normalized_type&gt;</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <span class="keyword">struct </span>coord_nearest</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; {</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; extent_type Texel;</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">typename</span> extent_type::bool_type UseTexel;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; };</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> extent_type, <span class="keyword">typename</span> normalized_type&gt;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">inline</span> coord_nearest&lt;extent_type, normalized_type&gt; make_coord_nearest(extent_type <span class="keyword">const</span>&amp; TexelExtent, normalized_type <span class="keyword">const</span>&amp; SampleCoord)</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; {</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; normalized_type <span class="keyword">const</span> TexelLast(normalized_type(TexelExtent) - normalized_type(1));</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; coord_nearest&lt;extent_type, normalized_type&gt; Coord;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; Coord.Texel = extent_type(round(SampleCoord * TexelLast));</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; Coord.UseTexel = in_interval(Coord.Texel, extent_type(0), TexelExtent - 1);</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> Coord;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; }</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> extent_type, <span class="keyword">typename</span> normalized_type&gt;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">struct </span>coord_linear</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; {</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; extent_type TexelFloor;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; extent_type TexelCeil;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; normalized_type Blend;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; };</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> extent_type, <span class="keyword">typename</span> normalized_type&gt;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">struct </span>coord_linear_border : <span class="keyword">public</span> coord_linear&lt;extent_type, normalized_type&gt;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; {</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">typename</span> extent_type::bool_type UseTexelFloor;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">typename</span> extent_type::bool_type UseTexelCeil;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; };</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> extent_type, <span class="keyword">typename</span> normalized_type&gt;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; GLI_FORCE_INLINE coord_linear&lt;extent_type, normalized_type&gt; make_coord_linear(extent_type <span class="keyword">const</span>&amp; TexelExtent, normalized_type <span class="keyword">const</span>&amp; SampleCoord)</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; {</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; coord_linear&lt;extent_type, normalized_type&gt; Coord;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; normalized_type <span class="keyword">const</span> TexelExtentF(TexelExtent);</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; normalized_type <span class="keyword">const</span> TexelLast = TexelExtentF - normalized_type(1);</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; normalized_type <span class="keyword">const</span> ScaledCoord(SampleCoord * TexelLast);</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; normalized_type <span class="keyword">const</span> ScaledCoordFloor = normalized_type(extent_type(ScaledCoord));</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; normalized_type <span class="keyword">const</span> ScaledCoordCeil = normalized_type(extent_type(ScaledCoord + normalized_type(0.5)));</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">//normalized_type const ScaledCoordFloor(floor(ScaledCoord));</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment">//normalized_type const ScaledCoordCeil(ceil(ScaledCoord));</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; Coord.Blend = ScaledCoord - ScaledCoordFloor;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; Coord.TexelFloor = extent_type(ScaledCoordFloor);</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; Coord.TexelCeil = extent_type(ScaledCoordCeil);</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">return</span> Coord;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> extent_type, <span class="keyword">typename</span> normalized_type&gt;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; GLI_FORCE_INLINE coord_linear_border&lt;extent_type, normalized_type&gt; make_coord_linear_border(extent_type <span class="keyword">const</span>&amp; TexelExtent, normalized_type <span class="keyword">const</span>&amp; SampleCoord)</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; coord_linear_border&lt;extent_type, normalized_type&gt; Coord;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; normalized_type <span class="keyword">const</span> TexelExtentF(TexelExtent);</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; normalized_type <span class="keyword">const</span> TexelLast = TexelExtentF - normalized_type(1);</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; normalized_type <span class="keyword">const</span> ScaledCoord(SampleCoord * TexelLast);</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; normalized_type <span class="keyword">const</span> ScaledCoordFloor(floor(ScaledCoord));</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; normalized_type <span class="keyword">const</span> ScaledCoordCeil(ceil(ScaledCoord));</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; Coord.Blend = ScaledCoord - ScaledCoordFloor;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; Coord.TexelFloor = extent_type(ScaledCoordFloor);</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; Coord.TexelCeil = extent_type(ScaledCoordCeil);</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; Coord.UseTexelFloor = in_interval(Coord.TexelFloor, extent_type(0), TexelExtent - 1);</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; Coord.UseTexelCeil = in_interval(Coord.TexelCeil, extent_type(0), TexelExtent - 1);</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> Coord;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;}<span class="comment">//namespace detail</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;}<span class="comment">//namespace gli</span></div>
<div class="ttc" id="a00074_html"><div class="ttname"><a href="a00074.html">gli</a></div><div class="ttdoc">Namespace where all the classes and functions provided by GLI are exposed. </div><div class="ttdef"><b>Definition:</b> <a href="a00020_source.html#l00006">clear.hpp:6</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,133 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: copy.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">copy.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Include to copy textures or a subset of either textures.
<a href="#details">More...</a></p>
<p><a href="a00026_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:a00074"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html">gli</a></td></tr>
<tr class="memdesc:a00074"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace where all the classes and functions provided by GLI are exposed. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a18991d99adce4e48cbbfe29f6a37dc53"><td class="memTemplParams" colspan="2"><a class="anchor" id="a18991d99adce4e48cbbfe29f6a37dc53"></a>
template&lt;typename texture_src_type , typename texture_dst_type &gt; </td></tr>
<tr class="memitem:a18991d99adce4e48cbbfe29f6a37dc53"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00074.html#a18991d99adce4e48cbbfe29f6a37dc53">copy</a> (texture_src_type const &amp;TextureSrc, size_t LayerSrc, size_t FaceSrc, size_t LevelSrc, texture_dst_type &amp;TextureDst, size_t LayerDst, size_t FaceDst, size_t LevelDst)</td></tr>
<tr class="memdesc:a18991d99adce4e48cbbfe29f6a37dc53"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy a specific image of a texture. <br /></td></tr>
<tr class="separator:a18991d99adce4e48cbbfe29f6a37dc53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a61abe48c5559f246bb2861ae7f1ddba5"><td class="memTemplParams" colspan="2"><a class="anchor" id="a61abe48c5559f246bb2861ae7f1ddba5"></a>
template&lt;typename texture_src_type , typename texture_dst_type &gt; </td></tr>
<tr class="memitem:a61abe48c5559f246bb2861ae7f1ddba5"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00074.html#a61abe48c5559f246bb2861ae7f1ddba5">copy</a> (texture_src_type const &amp;TextureSrc, texture_dst_type &amp;TextureDst)</td></tr>
<tr class="memdesc:a61abe48c5559f246bb2861ae7f1ddba5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy a texture. <br /></td></tr>
<tr class="separator:a61abe48c5559f246bb2861ae7f1ddba5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Include to copy textures or a subset of either textures. </p>
<p>These operations are performed without memory allocations. </p>
<p>Definition in file <a class="el" href="a00026_source.html">copy.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,161 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: copy.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">copy.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="a00026.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00071.html">type.hpp</a>&quot;</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00074.html">gli</a></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;{</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texture_src_type, <span class="keyword">typename</span> texture_dst_type&gt;</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; <span class="keywordtype">void</span> <a class="code" href="a00074.html#a18991d99adce4e48cbbfe29f6a37dc53">copy</a>(</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; texture_src_type <span class="keyword">const</span>&amp; TextureSrc, <span class="keywordtype">size_t</span> LayerSrc, <span class="keywordtype">size_t</span> FaceSrc, <span class="keywordtype">size_t</span> LevelSrc,</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; texture_dst_type&amp; TextureDst, <span class="keywordtype">size_t</span> LayerDst, <span class="keywordtype">size_t</span> FaceDst, <span class="keywordtype">size_t</span> LevelDst);</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texture_src_type, <span class="keyword">typename</span> texture_dst_type&gt;</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordtype">void</span> <a class="code" href="a00074.html#a18991d99adce4e48cbbfe29f6a37dc53">copy</a>(</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; texture_src_type <span class="keyword">const</span>&amp; TextureSrc,</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; texture_dst_type&amp; TextureDst);</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="comment">// Copy an entire level of a texture</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texture_src_type, <span class="keyword">typename</span> texture_dst_type&gt;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordtype">void</span> copy_level(</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; texture_src_type <span class="keyword">const</span>&amp; TextureSrc, <span class="keywordtype">size_t</span> BaseLevelSrc,</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; texture_dst_type&amp; TextureDst, <span class="keywordtype">size_t</span> BaseLevelDst);</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="comment">// Copy multiple levels of a texture</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texture_src_type, <span class="keyword">typename</span> texture_dst_type&gt;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordtype">void</span> copy_level(</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; texture_src_type <span class="keyword">const</span>&amp; TextureSrc, <span class="keywordtype">size_t</span> BaseLevelSrc,</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; texture_dst_type&amp; TextureDst, <span class="keywordtype">size_t</span> BaseLevelDst,</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordtype">size_t</span> LevelCount);</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="comment">// Copy an entire face of a texture</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texture_src_type, <span class="keyword">typename</span> texture_dst_type&gt;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">void</span> copy_face(</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; texture_src_type <span class="keyword">const</span>&amp; TextureSrc, <span class="keywordtype">size_t</span> BaseFaceSrc,</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; texture_dst_type&amp; TextureDst, <span class="keywordtype">size_t</span> BaseFaceDst);</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="comment">// Copy multiple faces of a texture</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texture_src_type, <span class="keyword">typename</span> texture_dst_type&gt;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">void</span> copy_face(</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; texture_src_type <span class="keyword">const</span>&amp; TextureSrc, <span class="keywordtype">size_t</span> BaseFaceSrc,</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; texture_dst_type&amp; TextureDst, <span class="keywordtype">size_t</span> BaseFaceDst,</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">size_t</span> FaceCount);</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="comment">// Copy an entire layer of a texture</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texture_src_type, <span class="keyword">typename</span> texture_dst_type&gt;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">void</span> copy_layer(</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; texture_src_type <span class="keyword">const</span>&amp; TextureSrc, <span class="keywordtype">size_t</span> BaseLayerSrc,</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; texture_dst_type&amp; TextureDst, <span class="keywordtype">size_t</span> BaseLayerDst);</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="comment">// Copy multiple layers of a texture</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texture_src_type, <span class="keyword">typename</span> texture_dst_type&gt;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">void</span> copy_layer(</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; texture_src_type <span class="keyword">const</span>&amp; TextureSrc, <span class="keywordtype">size_t</span> BaseLayerSrc,</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; texture_dst_type&amp; TextureDst, <span class="keywordtype">size_t</span> BaseLayerDst,</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">size_t</span> LayerCount);</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;}<span class="comment">//namespace gli</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor">#include &quot;./core/copy.inl&quot;</span></div>
<div class="ttc" id="a00074_html_a18991d99adce4e48cbbfe29f6a37dc53"><div class="ttname"><a href="a00074.html#a18991d99adce4e48cbbfe29f6a37dc53">gli::copy</a></div><div class="ttdeci">void copy(texture_src_type const &amp;TextureSrc, size_t LayerSrc, size_t FaceSrc, size_t LevelSrc, texture_dst_type &amp;TextureDst, size_t LayerDst, size_t FaceDst, size_t LevelDst)</div><div class="ttdoc">Copy a specific image of a texture. </div></div>
<div class="ttc" id="a00074_html"><div class="ttname"><a href="a00074.html">gli</a></div><div class="ttdoc">Namespace where all the classes and functions provided by GLI are exposed. </div><div class="ttdef"><b>Definition:</b> <a href="a00020_source.html#l00006">clear.hpp:6</a></div></div>
<div class="ttc" id="a00071_html"><div class="ttname"><a href="a00071.html">type.hpp</a></div><div class="ttdoc">Include to use basic GLI types. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,164 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: duplicate.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">duplicate.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Include to duplicate textures, images or a subset of either textures or an image.
<a href="#details">More...</a></p>
<p><a href="a00027_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:a00074"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html">gli</a></td></tr>
<tr class="memdesc:a00074"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace where all the classes and functions provided by GLI are exposed. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a457d37c485551c415f47e516a6c2d94b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a457d37c485551c415f47e516a6c2d94b"></a>
image&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a457d37c485551c415f47e516a6c2d94b">duplicate</a> (image const &amp;Image)</td></tr>
<tr class="memdesc:a457d37c485551c415f47e516a6c2d94b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Duplicate an image and create a new image with a new storage_linear allocation. <br /></td></tr>
<tr class="separator:a457d37c485551c415f47e516a6c2d94b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab1dab87dc368b30af802162e17637f94"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab1dab87dc368b30af802162e17637f94"></a>
template&lt;typename texType &gt; </td></tr>
<tr class="memitem:ab1dab87dc368b30af802162e17637f94"><td class="memTemplItemLeft" align="right" valign="top">texture&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00074.html#ab1dab87dc368b30af802162e17637f94">duplicate</a> (texType const &amp;Texture)</td></tr>
<tr class="memdesc:ab1dab87dc368b30af802162e17637f94"><td class="mdescLeft">&#160;</td><td class="mdescRight">Duplicate a texture and create a new texture with a new storage_linear allocation. <br /></td></tr>
<tr class="separator:ab1dab87dc368b30af802162e17637f94"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a66cb77e099d5f8ece2010924ad39eb34"><td class="memTemplParams" colspan="2">template&lt;typename texType &gt; </td></tr>
<tr class="memitem:a66cb77e099d5f8ece2010924ad39eb34"><td class="memTemplItemLeft" align="right" valign="top">texture&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00074.html#a66cb77e099d5f8ece2010924ad39eb34">duplicate</a> (texType const &amp;Texture, format Format)</td></tr>
<tr class="memdesc:a66cb77e099d5f8ece2010924ad39eb34"><td class="mdescLeft">&#160;</td><td class="mdescRight">Duplicate a texture and create a new texture with a new storage_linear allocation but a different format. <a href="a00074.html#a66cb77e099d5f8ece2010924ad39eb34">More...</a><br /></td></tr>
<tr class="separator:a66cb77e099d5f8ece2010924ad39eb34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82a93ed5b6cc923c44fa337aa69a63bd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a82a93ed5b6cc923c44fa337aa69a63bd"></a>
texture&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a82a93ed5b6cc923c44fa337aa69a63bd">duplicate</a> (texture1d const &amp;Texture, texture1d::size_type BaseLevel, texture1d::size_type MaxLevel)</td></tr>
<tr class="memdesc:a82a93ed5b6cc923c44fa337aa69a63bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Duplicate a subset of a texture and create a new texture with a new storage_linear allocation. <br /></td></tr>
<tr class="separator:a82a93ed5b6cc923c44fa337aa69a63bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7591d621e23536c1ed933c33c241b932"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7591d621e23536c1ed933c33c241b932"></a>
texture&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a7591d621e23536c1ed933c33c241b932">duplicate</a> (texture1d_array const &amp;Texture, texture1d_array::size_type BaseLayer, texture1d_array::size_type MaxLayer, texture1d_array::size_type BaseLevel, texture1d_array::size_type MaxLevel)</td></tr>
<tr class="memdesc:a7591d621e23536c1ed933c33c241b932"><td class="mdescLeft">&#160;</td><td class="mdescRight">Duplicate a subset of a texture and create a new texture with a new storage_linear allocation. <br /></td></tr>
<tr class="separator:a7591d621e23536c1ed933c33c241b932"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6f227b9c781fc807b4e6c25712637c88"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6f227b9c781fc807b4e6c25712637c88"></a>
texture&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a6f227b9c781fc807b4e6c25712637c88">duplicate</a> (texture2d const &amp;Texture, texture2d::size_type BaseLevel, texture2d::size_type MaxLevel)</td></tr>
<tr class="memdesc:a6f227b9c781fc807b4e6c25712637c88"><td class="mdescLeft">&#160;</td><td class="mdescRight">Duplicate a subset of a texture and create a new texture with a new storage_linear allocation. <br /></td></tr>
<tr class="separator:a6f227b9c781fc807b4e6c25712637c88"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adc4f5d284f4bdeee5269c5df2fed9837"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adc4f5d284f4bdeee5269c5df2fed9837"></a>
texture&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#adc4f5d284f4bdeee5269c5df2fed9837">duplicate</a> (texture2d_array const &amp;Texture, texture2d_array::size_type BaseLayer, texture2d_array::size_type MaxLayer, texture2d_array::size_type BaseLevel, texture2d_array::size_type MaxLevel)</td></tr>
<tr class="memdesc:adc4f5d284f4bdeee5269c5df2fed9837"><td class="mdescLeft">&#160;</td><td class="mdescRight">Duplicate a subset of a texture and create a new texture with a new storage_linear allocation. <br /></td></tr>
<tr class="separator:adc4f5d284f4bdeee5269c5df2fed9837"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9cad06041e1de52eb6a546befdc3c0ad"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9cad06041e1de52eb6a546befdc3c0ad"></a>
texture&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a9cad06041e1de52eb6a546befdc3c0ad">duplicate</a> (texture3d const &amp;Texture, texture3d::size_type BaseLevel, texture3d::size_type MaxLevel)</td></tr>
<tr class="memdesc:a9cad06041e1de52eb6a546befdc3c0ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Duplicate a subset of a texture and create a new texture with a new storage_linear allocation. <br /></td></tr>
<tr class="separator:a9cad06041e1de52eb6a546befdc3c0ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af44fdfbf60fe75a3d8eb1d4b5a677815"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af44fdfbf60fe75a3d8eb1d4b5a677815"></a>
texture&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#af44fdfbf60fe75a3d8eb1d4b5a677815">duplicate</a> (texture_cube const &amp;Texture, texture_cube::size_type BaseFace, texture_cube::size_type MaxFace, texture_cube::size_type BaseLevel, texture_cube::size_type MaxLevel)</td></tr>
<tr class="memdesc:af44fdfbf60fe75a3d8eb1d4b5a677815"><td class="mdescLeft">&#160;</td><td class="mdescRight">Duplicate a subset of a texture and create a new texture with a new storage_linear allocation. <br /></td></tr>
<tr class="separator:af44fdfbf60fe75a3d8eb1d4b5a677815"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af07ef1fffe312aa4f8b68dc38b7d39fa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af07ef1fffe312aa4f8b68dc38b7d39fa"></a>
texture&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#af07ef1fffe312aa4f8b68dc38b7d39fa">duplicate</a> (texture_cube_array const &amp;Texture, texture_cube_array::size_type BaseLayer, texture_cube_array::size_type MaxLayer, texture_cube_array::size_type BaseFace, texture_cube_array::size_type MaxFace, texture_cube_array::size_type BaseLevel, texture_cube_array::size_type MaxLevel)</td></tr>
<tr class="memdesc:af07ef1fffe312aa4f8b68dc38b7d39fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Duplicate a subset of a texture and create a new texture with a new storage_linear allocation. <br /></td></tr>
<tr class="separator:af07ef1fffe312aa4f8b68dc38b7d39fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Include to duplicate textures, images or a subset of either textures or an image. </p>
<p>These operations will cause memory allocations. </p>
<p>Definition in file <a class="el" href="a00027_source.html">duplicate.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,168 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: duplicate.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">duplicate.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="a00027.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00037.html">image.hpp</a>&quot;</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00063.html">texture1d.hpp</a>&quot;</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00064.html">texture1d_array.hpp</a>&quot;</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00065.html">texture2d.hpp</a>&quot;</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00066.html">texture2d_array.hpp</a>&quot;</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00067.html">texture3d.hpp</a>&quot;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00068.html">texture_cube.hpp</a>&quot;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00069.html">texture_cube_array.hpp</a>&quot;</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00074.html">gli</a></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;{</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; image <a class="code" href="a00074.html#a457d37c485551c415f47e516a6c2d94b">duplicate</a>(image <span class="keyword">const</span> &amp; Image);</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texType&gt;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; texture <a class="code" href="a00074.html#a457d37c485551c415f47e516a6c2d94b">duplicate</a>(texType <span class="keyword">const</span>&amp; Texture);</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texType&gt;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; texture <a class="code" href="a00074.html#a457d37c485551c415f47e516a6c2d94b">duplicate</a>(texType <span class="keyword">const</span>&amp; Texture, <a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a> Format);</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; texture <a class="code" href="a00074.html#a457d37c485551c415f47e516a6c2d94b">duplicate</a>(</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; texture1d <span class="keyword">const</span>&amp; Texture,</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; texture1d::size_type BaseLevel, texture1d::size_type MaxLevel);</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; texture <a class="code" href="a00074.html#a457d37c485551c415f47e516a6c2d94b">duplicate</a>(</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; texture1d_array <span class="keyword">const</span>&amp; Texture,</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; texture1d_array::size_type BaseLayer, texture1d_array::size_type MaxLayer,</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; texture1d_array::size_type BaseLevel, texture1d_array::size_type MaxLevel);</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; texture <a class="code" href="a00074.html#a457d37c485551c415f47e516a6c2d94b">duplicate</a>(</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; texture2d <span class="keyword">const</span>&amp; Texture,</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; texture2d::size_type BaseLevel, texture2d::size_type MaxLevel);</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; texture <a class="code" href="a00074.html#a457d37c485551c415f47e516a6c2d94b">duplicate</a>(</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; texture2d_array <span class="keyword">const</span>&amp; Texture,</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; texture2d_array::size_type BaseLayer, texture2d_array::size_type MaxLayer,</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; texture2d_array::size_type BaseLevel, texture2d_array::size_type MaxLevel);</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; texture <a class="code" href="a00074.html#a457d37c485551c415f47e516a6c2d94b">duplicate</a>(</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; texture3d <span class="keyword">const</span>&amp; Texture,</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; texture3d::size_type BaseLevel, texture3d::size_type MaxLevel);</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; texture <a class="code" href="a00074.html#a457d37c485551c415f47e516a6c2d94b">duplicate</a>(</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; texture_cube <span class="keyword">const</span>&amp; Texture,</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; texture_cube::size_type BaseFace, texture_cube::size_type MaxFace,</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; texture_cube::size_type BaseLevel, texture_cube::size_type MaxLevel);</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; texture <a class="code" href="a00074.html#a457d37c485551c415f47e516a6c2d94b">duplicate</a>(</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; texture_cube_array <span class="keyword">const</span>&amp; Texture,</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; texture_cube_array::size_type BaseLayer, texture_cube_array::size_type MaxLayer,</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; texture_cube_array::size_type BaseFace, texture_cube_array::size_type MaxFace,</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; texture_cube_array::size_type BaseLevel, texture_cube_array::size_type MaxLevel);</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;}<span class="comment">//namespace gli</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor">#include &quot;./core/duplicate.inl&quot;</span></div>
<div class="ttc" id="a00068_html"><div class="ttname"><a href="a00068.html">texture_cube.hpp</a></div><div class="ttdoc">Include to use cube map textures. </div></div>
<div class="ttc" id="a00074_html_a387137c43ed9616d39ba90e890d181eb"><div class="ttname"><a href="a00074.html#a387137c43ed9616d39ba90e890d181eb">gli::format</a></div><div class="ttdeci">format</div><div class="ttdoc">Texture data format. </div><div class="ttdef"><b>Definition:</b> <a href="a00033_source.html#l00012">format.hpp:12</a></div></div>
<div class="ttc" id="a00064_html"><div class="ttname"><a href="a00064.html">texture1d_array.hpp</a></div><div class="ttdoc">Include to use 1d array textures. </div></div>
<div class="ttc" id="a00067_html"><div class="ttname"><a href="a00067.html">texture3d.hpp</a></div><div class="ttdoc">Include to use 3d textures. </div></div>
<div class="ttc" id="a00063_html"><div class="ttname"><a href="a00063.html">texture1d.hpp</a></div><div class="ttdoc">Include to use 1d textures. </div></div>
<div class="ttc" id="a00074_html_a457d37c485551c415f47e516a6c2d94b"><div class="ttname"><a href="a00074.html#a457d37c485551c415f47e516a6c2d94b">gli::duplicate</a></div><div class="ttdeci">image duplicate(image const &amp;Image)</div><div class="ttdoc">Duplicate an image and create a new image with a new storage_linear allocation. </div></div>
<div class="ttc" id="a00066_html"><div class="ttname"><a href="a00066.html">texture2d_array.hpp</a></div><div class="ttdoc">Include to use 2d array textures. </div></div>
<div class="ttc" id="a00037_html"><div class="ttname"><a href="a00037.html">image.hpp</a></div><div class="ttdoc">Include to use images, a representation of a single texture level. </div></div>
<div class="ttc" id="a00069_html"><div class="ttname"><a href="a00069.html">texture_cube_array.hpp</a></div><div class="ttdoc">Include to use cube map array textures. </div></div>
<div class="ttc" id="a00074_html"><div class="ttname"><a href="a00074.html">gli</a></div><div class="ttdoc">Namespace where all the classes and functions provided by GLI are exposed. </div><div class="ttdef"><b>Definition:</b> <a href="a00020_source.html#l00006">clear.hpp:6</a></div></div>
<div class="ttc" id="a00065_html"><div class="ttname"><a href="a00065.html">texture2d.hpp</a></div><div class="ttdoc">Include to use 2d textures. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,133 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: dx.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">dx.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Include to translate GLI enums to DirectX enums.
<a href="#details">More...</a></p>
<p><a href="a00028_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00001.html">dx</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Translation class to convert GLI enums into DirectX enums. <a href="a00001.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:a00074"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html">gli</a></td></tr>
<tr class="memdesc:a00074"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace where all the classes and functions provided by GLI are exposed. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a5a607dedd5d94ffbb3112d9a4ea793f0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5a607dedd5d94ffbb3112d9a4ea793f0"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a5a607dedd5d94ffbb3112d9a4ea793f0">is_dds_ext</a> (target Target, format Format)</td></tr>
<tr class="memdesc:a5a607dedd5d94ffbb3112d9a4ea793f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate whether a target and format combinaison is only supported by the DDS container through GLI DDS extension. <br /></td></tr>
<tr class="separator:a5a607dedd5d94ffbb3112d9a4ea793f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Include to translate GLI enums to DirectX enums. </p>
<p>Definition in file <a class="el" href="a00028_source.html">dx.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,592 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: dx.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">dx.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="a00028.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00033.html">format.hpp</a>&quot;</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00061.html">target.hpp</a>&quot;</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#include &lt;array&gt;</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00074.html">gli</a></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;{</div>
<div class="line"><a name="l00013"></a><span class="lineno"><a class="line" href="a00001.html"> 13</a></span>&#160; <span class="keyword">class </span><a class="code" href="a00001.html">dx</a></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; {</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor"> #define GLI_MAKEFOURCC(ch0, ch1, ch2, ch3) \</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor"> (std::uint32_t)( \</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor"> (((std::uint32_t)(std::uint8_t)(ch3) &lt;&lt; 24) &amp; 0xFF000000) | \</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor"> (((std::uint32_t)(std::uint8_t)(ch2) &lt;&lt; 16) &amp; 0x00FF0000) | \</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor"> (((std::uint32_t)(std::uint8_t)(ch1) &lt;&lt; 8) &amp; 0x0000FF00) | \</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor"> ((std::uint32_t)(std::uint8_t)(ch0) &amp; 0x000000FF) )</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">enum</span> d3dfmt</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; {</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; D3DFMT_UNKNOWN = 0,</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; D3DFMT_R8G8B8 = 20,</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; D3DFMT_A8R8G8B8 = 21,</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; D3DFMT_X8R8G8B8 = 22,</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; D3DFMT_R5G6B5 = 23,</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; D3DFMT_X1R5G5B5 = 24,</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; D3DFMT_A1R5G5B5 = 25,</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; D3DFMT_A4R4G4B4 = 26,</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; D3DFMT_R3G3B2 = 27,</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; D3DFMT_A8 = 28,</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; D3DFMT_A8R3G3B2 = 29,</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; D3DFMT_X4R4G4B4 = 30,</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; D3DFMT_A2B10G10R10 = 31,</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; D3DFMT_A8B8G8R8 = 32,</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; D3DFMT_X8B8G8R8 = 33,</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; D3DFMT_G16R16 = 34,</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; D3DFMT_A2R10G10B10 = 35,</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; D3DFMT_A16B16G16R16 = 36,</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; D3DFMT_A8P8 = 40,</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; D3DFMT_P8 = 41,</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; D3DFMT_L8 = 50,</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; D3DFMT_A8L8 = 51,</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; D3DFMT_A4L4 = 52,</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; D3DFMT_V8U8 = 60,</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; D3DFMT_L6V5U5 = 61,</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; D3DFMT_X8L8V8U8 = 62,</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; D3DFMT_Q8W8V8U8 = 63,</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; D3DFMT_V16U16 = 64,</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; D3DFMT_A2W10V10U10 = 67,</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; D3DFMT_UYVY = GLI_MAKEFOURCC(<span class="charliteral">&#39;U&#39;</span>, <span class="charliteral">&#39;Y&#39;</span>, <span class="charliteral">&#39;V&#39;</span>, <span class="charliteral">&#39;Y&#39;</span>),</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; D3DFMT_R8G8_B8G8 = GLI_MAKEFOURCC(<span class="charliteral">&#39;R&#39;</span>, <span class="charliteral">&#39;G&#39;</span>, <span class="charliteral">&#39;B&#39;</span>, <span class="charliteral">&#39;G&#39;</span>),</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; D3DFMT_YUY2 = GLI_MAKEFOURCC(<span class="charliteral">&#39;Y&#39;</span>, <span class="charliteral">&#39;U&#39;</span>, <span class="charliteral">&#39;Y&#39;</span>, <span class="charliteral">&#39;2&#39;</span>),</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; D3DFMT_G8R8_G8B8 = GLI_MAKEFOURCC(<span class="charliteral">&#39;G&#39;</span>, <span class="charliteral">&#39;R&#39;</span>, <span class="charliteral">&#39;G&#39;</span>, <span class="charliteral">&#39;B&#39;</span>),</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; D3DFMT_DXT1 = GLI_MAKEFOURCC(<span class="charliteral">&#39;D&#39;</span>, <span class="charliteral">&#39;X&#39;</span>, <span class="charliteral">&#39;T&#39;</span>, <span class="charliteral">&#39;1&#39;</span>),</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; D3DFMT_DXT2 = GLI_MAKEFOURCC(<span class="charliteral">&#39;D&#39;</span>, <span class="charliteral">&#39;X&#39;</span>, <span class="charliteral">&#39;T&#39;</span>, <span class="charliteral">&#39;2&#39;</span>),</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; D3DFMT_DXT3 = GLI_MAKEFOURCC(<span class="charliteral">&#39;D&#39;</span>, <span class="charliteral">&#39;X&#39;</span>, <span class="charliteral">&#39;T&#39;</span>, <span class="charliteral">&#39;3&#39;</span>),</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; D3DFMT_DXT4 = GLI_MAKEFOURCC(<span class="charliteral">&#39;D&#39;</span>, <span class="charliteral">&#39;X&#39;</span>, <span class="charliteral">&#39;T&#39;</span>, <span class="charliteral">&#39;4&#39;</span>),</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; D3DFMT_DXT5 = GLI_MAKEFOURCC(<span class="charliteral">&#39;D&#39;</span>, <span class="charliteral">&#39;X&#39;</span>, <span class="charliteral">&#39;T&#39;</span>, <span class="charliteral">&#39;5&#39;</span>),</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; D3DFMT_ATI1 = GLI_MAKEFOURCC(<span class="charliteral">&#39;A&#39;</span>, <span class="charliteral">&#39;T&#39;</span>, <span class="charliteral">&#39;I&#39;</span>, <span class="charliteral">&#39;1&#39;</span>),</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; D3DFMT_AT1N = GLI_MAKEFOURCC(<span class="charliteral">&#39;A&#39;</span>, <span class="charliteral">&#39;T&#39;</span>, <span class="charliteral">&#39;1&#39;</span>, <span class="charliteral">&#39;N&#39;</span>),</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; D3DFMT_ATI2 = GLI_MAKEFOURCC(<span class="charliteral">&#39;A&#39;</span>, <span class="charliteral">&#39;T&#39;</span>, <span class="charliteral">&#39;I&#39;</span>, <span class="charliteral">&#39;2&#39;</span>),</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; D3DFMT_AT2N = GLI_MAKEFOURCC(<span class="charliteral">&#39;A&#39;</span>, <span class="charliteral">&#39;T&#39;</span>, <span class="charliteral">&#39;2&#39;</span>, <span class="charliteral">&#39;N&#39;</span>),</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; D3DFMT_BC4U = GLI_MAKEFOURCC(<span class="charliteral">&#39;B&#39;</span>, <span class="charliteral">&#39;C&#39;</span>, <span class="charliteral">&#39;4&#39;</span>, <span class="charliteral">&#39;U&#39;</span>),</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; D3DFMT_BC4S = GLI_MAKEFOURCC(<span class="charliteral">&#39;B&#39;</span>, <span class="charliteral">&#39;C&#39;</span>, <span class="charliteral">&#39;4&#39;</span>, <span class="charliteral">&#39;S&#39;</span>),</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; D3DFMT_BC5U = GLI_MAKEFOURCC(<span class="charliteral">&#39;B&#39;</span>, <span class="charliteral">&#39;C&#39;</span>, <span class="charliteral">&#39;5&#39;</span>, <span class="charliteral">&#39;U&#39;</span>),</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; D3DFMT_BC5S = GLI_MAKEFOURCC(<span class="charliteral">&#39;B&#39;</span>, <span class="charliteral">&#39;C&#39;</span>, <span class="charliteral">&#39;5&#39;</span>, <span class="charliteral">&#39;S&#39;</span>),</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; D3DFMT_ETC = GLI_MAKEFOURCC(<span class="charliteral">&#39;E&#39;</span>, <span class="charliteral">&#39;T&#39;</span>, <span class="charliteral">&#39;C&#39;</span>, <span class="charliteral">&#39; &#39;</span>),</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; D3DFMT_ETC1 = GLI_MAKEFOURCC(<span class="charliteral">&#39;E&#39;</span>, <span class="charliteral">&#39;T&#39;</span>, <span class="charliteral">&#39;C&#39;</span>, <span class="charliteral">&#39;1&#39;</span>),</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; D3DFMT_ATC = GLI_MAKEFOURCC(<span class="charliteral">&#39;A&#39;</span>, <span class="charliteral">&#39;T&#39;</span>, <span class="charliteral">&#39;C&#39;</span>, <span class="charliteral">&#39; &#39;</span>),</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; D3DFMT_ATCA = GLI_MAKEFOURCC(<span class="charliteral">&#39;A&#39;</span>, <span class="charliteral">&#39;T&#39;</span>, <span class="charliteral">&#39;C&#39;</span>, <span class="charliteral">&#39;A&#39;</span>),</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; D3DFMT_ATCI = GLI_MAKEFOURCC(<span class="charliteral">&#39;A&#39;</span>, <span class="charliteral">&#39;T&#39;</span>, <span class="charliteral">&#39;C&#39;</span>, <span class="charliteral">&#39;I&#39;</span>),</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; D3DFMT_POWERVR_2BPP = GLI_MAKEFOURCC(<span class="charliteral">&#39;P&#39;</span>, <span class="charliteral">&#39;T&#39;</span>, <span class="charliteral">&#39;C&#39;</span>, <span class="charliteral">&#39;2&#39;</span>),</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; D3DFMT_POWERVR_4BPP = GLI_MAKEFOURCC(<span class="charliteral">&#39;P&#39;</span>, <span class="charliteral">&#39;T&#39;</span>, <span class="charliteral">&#39;C&#39;</span>, <span class="charliteral">&#39;4&#39;</span>),</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; D3DFMT_D16_LOCKABLE = 70,</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; D3DFMT_D32 = 71,</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; D3DFMT_D15S1 = 73,</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; D3DFMT_D24S8 = 75,</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; D3DFMT_D24X8 = 77,</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; D3DFMT_D24X4S4 = 79,</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; D3DFMT_D16 = 80,</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; D3DFMT_D32F_LOCKABLE = 82,</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; D3DFMT_D24FS8 = 83,</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; D3DFMT_L16 = 81,</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; D3DFMT_VERTEXDATA = 100,</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; D3DFMT_INDEX16 = 101,</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; D3DFMT_INDEX32 = 102,</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; D3DFMT_Q16W16V16U16 = 110,</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; D3DFMT_MULTI2_ARGB8 = GLI_MAKEFOURCC(<span class="charliteral">&#39;M&#39;</span>,<span class="charliteral">&#39;E&#39;</span>,<span class="charliteral">&#39;T&#39;</span>,<span class="charliteral">&#39;1&#39;</span>),</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; D3DFMT_R16F = 111,</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; D3DFMT_G16R16F = 112,</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; D3DFMT_A16B16G16R16F = 113,</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; D3DFMT_R32F = 114,</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; D3DFMT_G32R32F = 115,</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; D3DFMT_A32B32G32R32F = 116,</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; D3DFMT_CxV8U8 = 117,</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; D3DFMT_DX10 = GLI_MAKEFOURCC(<span class="charliteral">&#39;D&#39;</span>, <span class="charliteral">&#39;X&#39;</span>, <span class="charliteral">&#39;1&#39;</span>, <span class="charliteral">&#39;0&#39;</span>),</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; D3DFMT_GLI1 = GLI_MAKEFOURCC(<span class="charliteral">&#39;G&#39;</span>, <span class="charliteral">&#39;L&#39;</span>, <span class="charliteral">&#39;I&#39;</span>, <span class="charliteral">&#39;1&#39;</span>),</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; D3DFMT_FORCE_DWORD = 0x7fffffff</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; };</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; </div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keyword">enum</span> dxgi_format_dds</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; DXGI_FORMAT_UNKNOWN = 0,</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; DXGI_FORMAT_R32G32B32A32_TYPELESS = 1,</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; DXGI_FORMAT_R32G32B32A32_FLOAT = 2,</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; DXGI_FORMAT_R32G32B32A32_UINT = 3,</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; DXGI_FORMAT_R32G32B32A32_SINT = 4,</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; DXGI_FORMAT_R32G32B32_TYPELESS = 5,</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; DXGI_FORMAT_R32G32B32_FLOAT = 6,</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; DXGI_FORMAT_R32G32B32_UINT = 7,</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; DXGI_FORMAT_R32G32B32_SINT = 8,</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; DXGI_FORMAT_R16G16B16A16_TYPELESS = 9,</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; DXGI_FORMAT_R16G16B16A16_FLOAT = 10,</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; DXGI_FORMAT_R16G16B16A16_UNORM = 11,</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; DXGI_FORMAT_R16G16B16A16_UINT = 12,</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; DXGI_FORMAT_R16G16B16A16_SNORM = 13,</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; DXGI_FORMAT_R16G16B16A16_SINT = 14,</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; DXGI_FORMAT_R32G32_TYPELESS = 15,</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; DXGI_FORMAT_R32G32_FLOAT = 16,</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; DXGI_FORMAT_R32G32_UINT = 17,</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; DXGI_FORMAT_R32G32_SINT = 18,</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; DXGI_FORMAT_R32G8X24_TYPELESS = 19,</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; DXGI_FORMAT_D32_FLOAT_S8X24_UINT = 20,</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = 21,</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 22,</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; DXGI_FORMAT_R10G10B10A2_TYPELESS = 23,</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; DXGI_FORMAT_R10G10B10A2_UNORM = 24,</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; DXGI_FORMAT_R10G10B10A2_UINT = 25,</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; DXGI_FORMAT_R11G11B10_FLOAT = 26,</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; DXGI_FORMAT_R8G8B8A8_TYPELESS = 27,</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; DXGI_FORMAT_R8G8B8A8_UNORM = 28,</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29,</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; DXGI_FORMAT_R8G8B8A8_UINT = 30,</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; DXGI_FORMAT_R8G8B8A8_SNORM = 31,</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; DXGI_FORMAT_R8G8B8A8_SINT = 32,</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; DXGI_FORMAT_R16G16_TYPELESS = 33,</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; DXGI_FORMAT_R16G16_FLOAT = 34,</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; DXGI_FORMAT_R16G16_UNORM = 35,</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; DXGI_FORMAT_R16G16_UINT = 36,</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; DXGI_FORMAT_R16G16_SNORM = 37,</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; DXGI_FORMAT_R16G16_SINT = 38,</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; DXGI_FORMAT_R32_TYPELESS = 39,</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; DXGI_FORMAT_D32_FLOAT = 40,</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; DXGI_FORMAT_R32_FLOAT = 41,</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; DXGI_FORMAT_R32_UINT = 42,</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; DXGI_FORMAT_R32_SINT = 43,</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; DXGI_FORMAT_R24G8_TYPELESS = 44,</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; DXGI_FORMAT_D24_UNORM_S8_UINT = 45,</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; DXGI_FORMAT_R24_UNORM_X8_TYPELESS = 46,</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; DXGI_FORMAT_X24_TYPELESS_G8_UINT = 47,</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; DXGI_FORMAT_R8G8_TYPELESS = 48,</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; DXGI_FORMAT_R8G8_UNORM = 49,</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; DXGI_FORMAT_R8G8_UINT = 50,</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; DXGI_FORMAT_R8G8_SNORM = 51,</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; DXGI_FORMAT_R8G8_SINT = 52,</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; DXGI_FORMAT_R16_TYPELESS = 53,</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; DXGI_FORMAT_R16_FLOAT = 54,</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; DXGI_FORMAT_D16_UNORM = 55,</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; DXGI_FORMAT_R16_UNORM = 56,</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; DXGI_FORMAT_R16_UINT = 57,</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; DXGI_FORMAT_R16_SNORM = 58,</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; DXGI_FORMAT_R16_SINT = 59,</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; DXGI_FORMAT_R8_TYPELESS = 60,</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; DXGI_FORMAT_R8_UNORM = 61,</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; DXGI_FORMAT_R8_UINT = 62,</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; DXGI_FORMAT_R8_SNORM = 63,</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; DXGI_FORMAT_R8_SINT = 64,</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; DXGI_FORMAT_A8_UNORM = 65,</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; DXGI_FORMAT_R1_UNORM = 66,</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 67,</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; DXGI_FORMAT_R8G8_B8G8_UNORM = 68,</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; DXGI_FORMAT_G8R8_G8B8_UNORM = 69,</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; DXGI_FORMAT_BC1_TYPELESS = 70,</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; DXGI_FORMAT_BC1_UNORM = 71,</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; DXGI_FORMAT_BC1_UNORM_SRGB = 72,</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; DXGI_FORMAT_BC2_TYPELESS = 73,</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; DXGI_FORMAT_BC2_UNORM = 74,</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; DXGI_FORMAT_BC2_UNORM_SRGB = 75,</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; DXGI_FORMAT_BC3_TYPELESS = 76,</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; DXGI_FORMAT_BC3_UNORM = 77,</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; DXGI_FORMAT_BC3_UNORM_SRGB = 78,</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; DXGI_FORMAT_BC4_TYPELESS = 79,</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; DXGI_FORMAT_BC4_UNORM = 80,</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; DXGI_FORMAT_BC4_SNORM = 81,</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; DXGI_FORMAT_BC5_TYPELESS = 82,</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; DXGI_FORMAT_BC5_UNORM = 83,</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; DXGI_FORMAT_BC5_SNORM = 84,</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; DXGI_FORMAT_B5G6R5_UNORM = 85,</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; DXGI_FORMAT_B5G5R5A1_UNORM = 86,</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; DXGI_FORMAT_B8G8R8A8_UNORM = 87,</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; DXGI_FORMAT_B8G8R8X8_UNORM = 88,</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM = 89,</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; DXGI_FORMAT_B8G8R8A8_TYPELESS = 90,</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; DXGI_FORMAT_B8G8R8A8_UNORM_SRGB = 91,</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; DXGI_FORMAT_B8G8R8X8_TYPELESS = 92,</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; DXGI_FORMAT_B8G8R8X8_UNORM_SRGB = 93,</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; DXGI_FORMAT_BC6H_TYPELESS = 94,</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; DXGI_FORMAT_BC6H_UF16 = 95,</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; DXGI_FORMAT_BC6H_SF16 = 96,</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; DXGI_FORMAT_BC7_TYPELESS = 97,</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; DXGI_FORMAT_BC7_UNORM = 98,</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; DXGI_FORMAT_BC7_UNORM_SRGB = 99,</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; DXGI_FORMAT_AYUV = 100,</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; DXGI_FORMAT_Y410 = 101,</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; DXGI_FORMAT_Y416 = 102,</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; DXGI_FORMAT_NV12 = 103,</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; DXGI_FORMAT_P010 = 104,</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; DXGI_FORMAT_P016 = 105,</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; DXGI_FORMAT_420_OPAQUE = 106,</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; DXGI_FORMAT_YUY2 = 107,</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; DXGI_FORMAT_Y210 = 108,</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; DXGI_FORMAT_Y216 = 109,</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; DXGI_FORMAT_NV11 = 110,</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; DXGI_FORMAT_AI44 = 111,</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; DXGI_FORMAT_IA44 = 112,</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; DXGI_FORMAT_P8 = 113,</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; DXGI_FORMAT_A8P8 = 114,</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; DXGI_FORMAT_B4G4R4A4_UNORM = 115,</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; DXGI_FORMAT_P208 = 130,</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; DXGI_FORMAT_V208 = 131,</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; DXGI_FORMAT_V408 = 132,</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; DXGI_FORMAT_ASTC_4X4_TYPELESS = 133,</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; DXGI_FORMAT_ASTC_4X4_UNORM = 134,</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; DXGI_FORMAT_ASTC_4X4_UNORM_SRGB = 135,</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; DXGI_FORMAT_ASTC_5X4_TYPELESS = 137,</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; DXGI_FORMAT_ASTC_5X4_UNORM = 138,</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; DXGI_FORMAT_ASTC_5X4_UNORM_SRGB = 139,</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; DXGI_FORMAT_ASTC_5X5_TYPELESS = 141,</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; DXGI_FORMAT_ASTC_5X5_UNORM = 142,</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; DXGI_FORMAT_ASTC_5X5_UNORM_SRGB = 143,</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; DXGI_FORMAT_ASTC_6X5_TYPELESS = 145,</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; DXGI_FORMAT_ASTC_6X5_UNORM = 146,</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; DXGI_FORMAT_ASTC_6X5_UNORM_SRGB = 147,</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; DXGI_FORMAT_ASTC_6X6_TYPELESS = 149,</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; DXGI_FORMAT_ASTC_6X6_UNORM = 150,</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; DXGI_FORMAT_ASTC_6X6_UNORM_SRGB = 151,</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; DXGI_FORMAT_ASTC_8X5_TYPELESS = 153,</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; DXGI_FORMAT_ASTC_8X5_UNORM = 154,</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; DXGI_FORMAT_ASTC_8X5_UNORM_SRGB = 155,</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; DXGI_FORMAT_ASTC_8X6_TYPELESS = 157,</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; DXGI_FORMAT_ASTC_8X6_UNORM = 158,</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; DXGI_FORMAT_ASTC_8X6_UNORM_SRGB = 159,</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; DXGI_FORMAT_ASTC_8X8_TYPELESS = 161,</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; DXGI_FORMAT_ASTC_8X8_UNORM = 162,</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; DXGI_FORMAT_ASTC_8X8_UNORM_SRGB = 163,</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; DXGI_FORMAT_ASTC_10X5_TYPELESS = 165,</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; DXGI_FORMAT_ASTC_10X5_UNORM = 166,</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; DXGI_FORMAT_ASTC_10X5_UNORM_SRGB = 167,</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; DXGI_FORMAT_ASTC_10X6_TYPELESS = 169,</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; DXGI_FORMAT_ASTC_10X6_UNORM = 170,</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; DXGI_FORMAT_ASTC_10X6_UNORM_SRGB = 171,</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; DXGI_FORMAT_ASTC_10X8_TYPELESS = 173,</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; DXGI_FORMAT_ASTC_10X8_UNORM = 174,</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; DXGI_FORMAT_ASTC_10X8_UNORM_SRGB = 175,</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; DXGI_FORMAT_ASTC_10X10_TYPELESS = 177,</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; DXGI_FORMAT_ASTC_10X10_UNORM = 178,</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; DXGI_FORMAT_ASTC_10X10_UNORM_SRGB = 179,</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; DXGI_FORMAT_ASTC_12X10_TYPELESS = 181,</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; DXGI_FORMAT_ASTC_12X10_UNORM = 182,</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; DXGI_FORMAT_ASTC_12X10_UNORM_SRGB = 183,</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; DXGI_FORMAT_ASTC_12X12_TYPELESS = 185,</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; DXGI_FORMAT_ASTC_12X12_UNORM = 186,</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; DXGI_FORMAT_ASTC_12X12_UNORM_SRGB = 187,</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; DXGI_FORMAT_FORCE_UINT = 0xffffffffUL</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; };</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keyword">enum</span> dxgi_format_gli</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; {</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; DXGI_FORMAT_R64_UINT_GLI = 1,</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; DXGI_FORMAT_R64_SINT_GLI,</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; DXGI_FORMAT_R64_FLOAT_GLI,</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; DXGI_FORMAT_R64G64_UINT_GLI,</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; DXGI_FORMAT_R64G64_SINT_GLI,</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; DXGI_FORMAT_R64G64_FLOAT_GLI,</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; DXGI_FORMAT_R64G64B64_UINT_GLI,</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; DXGI_FORMAT_R64G64B64_SINT_GLI,</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; DXGI_FORMAT_R64G64B64_FLOAT_GLI,</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; DXGI_FORMAT_R64G64B64A64_UINT_GLI,</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; DXGI_FORMAT_R64G64B64A64_SINT_GLI,</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; DXGI_FORMAT_R64G64B64A64_FLOAT_GLI,</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; </div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; DXGI_FORMAT_RG4_UNORM_GLI,</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; DXGI_FORMAT_RGBA4_UNORM_GLI,</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; DXGI_FORMAT_R5G6B5_UNORM_GLI,</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; DXGI_FORMAT_R5G5B5A1_UNORM_GLI,</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; DXGI_FORMAT_A1B5G5R5_UNORM_GLI,</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; </div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; DXGI_FORMAT_R8_SRGB_GLI,</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; DXGI_FORMAT_R8_USCALED_GLI,</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; DXGI_FORMAT_R8_SSCALED_GLI,</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; </div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; DXGI_FORMAT_R8G8_SRGB_GLI,</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; DXGI_FORMAT_R8G8_USCALED_GLI,</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; DXGI_FORMAT_R8G8_SSCALED_GLI,</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; </div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; DXGI_FORMAT_R8G8B8_UNORM_GLI,</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; DXGI_FORMAT_R8G8B8_SNORM_GLI,</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; DXGI_FORMAT_R8G8B8_USCALED_GLI,</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; DXGI_FORMAT_R8G8B8_SSCALED_GLI,</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; DXGI_FORMAT_R8G8B8_UINT_GLI,</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; DXGI_FORMAT_R8G8B8_SINT_GLI,</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; DXGI_FORMAT_R8G8B8_SRGB_GLI,</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; </div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; DXGI_FORMAT_B8G8R8_UNORM_GLI,</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; DXGI_FORMAT_B8G8R8_SNORM_GLI,</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; DXGI_FORMAT_B8G8R8_USCALED_GLI,</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; DXGI_FORMAT_B8G8R8_SSCALED_GLI,</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; DXGI_FORMAT_B8G8R8_UINT_GLI,</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; DXGI_FORMAT_B8G8R8_SINT_GLI,</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; DXGI_FORMAT_B8G8R8_SRGB_GLI,</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; </div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; DXGI_FORMAT_R8G8B8A8_USCALED_GLI,</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; DXGI_FORMAT_R8G8B8A8_SSCALED_GLI,</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; </div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; DXGI_FORMAT_B8G8R8A8_SNORM_GLI,</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; DXGI_FORMAT_B8G8R8A8_USCALED_GLI,</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; DXGI_FORMAT_B8G8R8A8_SSCALED_GLI,</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; DXGI_FORMAT_B8G8R8A8_UINT_GLI,</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; DXGI_FORMAT_B8G8R8A8_SINT_GLI,</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; </div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; DXGI_FORMAT_R8G8B8A8_PACK_UNORM_GLI,</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; DXGI_FORMAT_R8G8B8A8_PACK_SNORM_GLI,</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; DXGI_FORMAT_R8G8B8A8_PACK_USCALED_GLI,</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; DXGI_FORMAT_R8G8B8A8_PACK_SSCALED_GLI,</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; DXGI_FORMAT_R8G8B8A8_PACK_UINT_GLI,</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; DXGI_FORMAT_R8G8B8A8_PACK_SINT_GLI,</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; DXGI_FORMAT_R8G8B8A8_PACK_SRGB_GLI,</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; </div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; DXGI_FORMAT_R10G10B10A2_SNORM_GLI,</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; DXGI_FORMAT_R10G10B10A2_USCALED_GLI,</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; DXGI_FORMAT_R10G10B10A2_SSCALED_GLI,</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; DXGI_FORMAT_R10G10B10A2_SINT_GLI,</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; </div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; DXGI_FORMAT_B10G10R10A2_UNORM_GLI,</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; DXGI_FORMAT_B10G10R10A2_SNORM_GLI,</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; DXGI_FORMAT_B10G10R10A2_USCALED_GLI,</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; DXGI_FORMAT_B10G10R10A2_SSCALED_GLI,</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; DXGI_FORMAT_B10G10R10A2_UINT_GLI,</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; DXGI_FORMAT_B10G10R10A2_SINT_GLI,</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; </div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; DXGI_FORMAT_R16_USCALED_GLI,</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; DXGI_FORMAT_R16_SSCALED_GLI,</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; DXGI_FORMAT_R16G16_USCALED_GLI,</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; DXGI_FORMAT_R16G16_SSCALED_GLI,</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; </div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; DXGI_FORMAT_R16G16B16_UNORM_GLI,</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; DXGI_FORMAT_R16G16B16_SNORM_GLI,</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; DXGI_FORMAT_R16G16B16_USCALED_GLI,</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; DXGI_FORMAT_R16G16B16_SSCALED_GLI,</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; DXGI_FORMAT_R16G16B16_UINT_GLI,</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; DXGI_FORMAT_R16G16B16_SINT_GLI,</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; DXGI_FORMAT_R16G16B16_FLOAT_GLI,</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; </div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; DXGI_FORMAT_R16G16B16A16_USCALED_GLI,</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; DXGI_FORMAT_R16G16B16A16_SSCALED_GLI,</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; </div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; DXGI_FORMAT_S8_UINT_GLI,</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; DXGI_FORMAT_D16_UNORM_S8_UINT_GLI,</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; DXGI_FORMAT_D24_UNORM_GLI,</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; </div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; DXGI_FORMAT_L8_UNORM_GLI,</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; DXGI_FORMAT_A8_UNORM_GLI,</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; DXGI_FORMAT_LA8_UNORM_GLI,</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; DXGI_FORMAT_L16_UNORM_GLI,</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; DXGI_FORMAT_A16_UNORM_GLI,</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; DXGI_FORMAT_LA16_UNORM_GLI,</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; </div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; DXGI_FORMAT_R3G3B2_UNORM_GLI,</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; </div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; DXGI_FORMAT_BC1_RGB_UNORM_GLI,</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; DXGI_FORMAT_BC1_RGB_SRGB_GLI,</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; DXGI_FORMAT_RGB_ETC2_UNORM_GLI,</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; DXGI_FORMAT_RGB_ETC2_SRGB_GLI,</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; DXGI_FORMAT_RGBA_ETC2_A1_UNORM_GLI,</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; DXGI_FORMAT_RGBA_ETC2_A1_SRGB_GLI,</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; DXGI_FORMAT_RGBA_ETC2_UNORM_GLI,</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; DXGI_FORMAT_RGBA_ETC2_SRGB_GLI,</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; DXGI_FORMAT_R11_EAC_UNORM_GLI,</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; DXGI_FORMAT_R11_EAC_SNORM_GLI,</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; DXGI_FORMAT_RG11_EAC_UNORM_GLI,</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; DXGI_FORMAT_RG11_EAC_SNORM_GLI,</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; </div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; DXGI_FORMAT_RGB_PVRTC1_8X8_UNORM_GLI,</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; DXGI_FORMAT_RGB_PVRTC1_8X8_SRGB_GLI,</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; DXGI_FORMAT_RGB_PVRTC1_16X8_UNORM_GLI,</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; DXGI_FORMAT_RGB_PVRTC1_16X8_SRGB_GLI,</div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; DXGI_FORMAT_RGBA_PVRTC1_8X8_UNORM_GLI,</div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; DXGI_FORMAT_RGBA_PVRTC1_8X8_SRGB_GLI,</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; DXGI_FORMAT_RGBA_PVRTC1_16X8_UNORM_GLI,</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; DXGI_FORMAT_RGBA_PVRTC1_16X8_SRGB_GLI,</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; DXGI_FORMAT_RGBA_PVRTC2_8X8_UNORM_GLI,</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; DXGI_FORMAT_RGBA_PVRTC2_8X8_SRGB_GLI,</div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; DXGI_FORMAT_RGBA_PVRTC2_16X8_UNORM_GLI,</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; DXGI_FORMAT_RGBA_PVRTC2_16X8_SRGB_GLI,</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; </div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; DXGI_FORMAT_RGB_ETC_UNORM_GLI,</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; DXGI_FORMAT_RGB_ATC_UNORM_GLI,</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; DXGI_FORMAT_RGBA_ATCA_UNORM_GLI,</div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; DXGI_FORMAT_RGBA_ATCI_UNORM_GLI,</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; };</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; </div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keyword">union </span>dxgiFormat</div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; {</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; dxgiFormat()</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; : DDS(DXGI_FORMAT_UNKNOWN)</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; {}</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; </div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; dxgiFormat(dxgi_format_dds DDS)</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; : DDS(DDS)</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; {}</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; dxgiFormat(dxgi_format_gli GLI)</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; : GLI(GLI)</div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; {}</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; </div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; dxgi_format_dds DDS;</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; dxgi_format_gli GLI;</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; };</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; </div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keyword">enum</span> ddpf</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; {</div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; DDPF_ALPHAPIXELS = 0x1,</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; DDPF_ALPHA = 0x2,</div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; DDPF_FOURCC = 0x4,</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; DDPF_RGB = 0x40,</div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; DDPF_YUV = 0x200,</div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; DDPF_LUMINANCE = 0x20000,</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; DDPF_LUMINANCE_ALPHA = DDPF_LUMINANCE | DDPF_ALPHA,</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; DDPF_RGBAPIXELS = DDPF_RGB | DDPF_ALPHAPIXELS,</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; DDPF_RGBA = DDPF_RGB | DDPF_ALPHA,</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; DDPF_LUMINANCE_ALPHAPIXELS = DDPF_LUMINANCE | DDPF_ALPHAPIXELS,</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;</div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; };</div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;</div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keyword">struct </span><a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a></div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; {</div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; ddpf DDPixelFormat;</div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; d3dfmt D3DFormat;</div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; dxgiFormat DXGIFormat;</div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; glm::u32vec4 Mask;</div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; };</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;</div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <a class="code" href="a00001.html">dx</a>();</div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;</div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a> <span class="keyword">const</span>&amp; <a class="code" href="a00001.html#ac5a07c3371b0ea14fac8b0746e05c414">translate</a>(<a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">gli::format</a> Format) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;</div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">gli::format</a> <a class="code" href="a00001.html#a106d0ef4c65251c1c522e965af75678d">find</a>(d3dfmt FourCC) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;</div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">gli::format</a> <a class="code" href="a00001.html#a106d0ef4c65251c1c522e965af75678d">find</a>(d3dfmt FourCC, dxgiFormat Format) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;</div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; std::array&lt;format, FORMAT_COUNT&gt; Translation;</div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; };</div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;</div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="a00074.html#a5a607dedd5d94ffbb3112d9a4ea793f0">is_dds_ext</a>(<a class="code" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">target</a> Target, <a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a> Format);</div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;}<span class="comment">//namespace gli</span></div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;</div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;<span class="preprocessor">#include &quot;./core/dx.inl&quot;</span></div>
<div class="ttc" id="a00074_html_a387137c43ed9616d39ba90e890d181eb"><div class="ttname"><a href="a00074.html#a387137c43ed9616d39ba90e890d181eb">gli::format</a></div><div class="ttdeci">format</div><div class="ttdoc">Texture data format. </div><div class="ttdef"><b>Definition:</b> <a href="a00033_source.html#l00012">format.hpp:12</a></div></div>
<div class="ttc" id="a00001_html"><div class="ttname"><a href="a00001.html">gli::dx</a></div><div class="ttdoc">Translation class to convert GLI enums into DirectX enums. </div><div class="ttdef"><b>Definition:</b> <a href="a00028_source.html#l00013">dx.hpp:13</a></div></div>
<div class="ttc" id="a00001_html_a106d0ef4c65251c1c522e965af75678d"><div class="ttname"><a href="a00001.html#a106d0ef4c65251c1c522e965af75678d">gli::dx::find</a></div><div class="ttdeci">gli::format find(d3dfmt FourCC) const </div><div class="ttdoc">Convert a Direct3D 9 format into a GLI format. </div></div>
<div class="ttc" id="a00061_html"><div class="ttname"><a href="a00061.html">target.hpp</a></div><div class="ttdoc">Include to use the target enum and query properties of targets. </div></div>
<div class="ttc" id="a00001_html_ac5a07c3371b0ea14fac8b0746e05c414"><div class="ttname"><a href="a00001.html#ac5a07c3371b0ea14fac8b0746e05c414">gli::dx::translate</a></div><div class="ttdeci">format const &amp; translate(gli::format Format) const </div><div class="ttdoc">Convert GLI formats into Direct3D formats. </div></div>
<div class="ttc" id="a00074_html_a5d2c023108742a1ce78ba9823c06ea35"><div class="ttname"><a href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">gli::target</a></div><div class="ttdeci">target</div><div class="ttdoc">Texture target: type/shape of the texture storage_linear. </div><div class="ttdef"><b>Definition:</b> <a href="a00061_source.html#l00009">target.hpp:9</a></div></div>
<div class="ttc" id="a00074_html"><div class="ttname"><a href="a00074.html">gli</a></div><div class="ttdoc">Namespace where all the classes and functions provided by GLI are exposed. </div><div class="ttdef"><b>Definition:</b> <a href="a00020_source.html#l00006">clear.hpp:6</a></div></div>
<div class="ttc" id="a00033_html"><div class="ttname"><a href="a00033.html">format.hpp</a></div><div class="ttdoc">Include to use the format enum and query properties of formats. </div></div>
<div class="ttc" id="a00074_html_a5a607dedd5d94ffbb3112d9a4ea793f0"><div class="ttname"><a href="a00074.html#a5a607dedd5d94ffbb3112d9a4ea793f0">gli::is_dds_ext</a></div><div class="ttdeci">bool is_dds_ext(target Target, format Format)</div><div class="ttdoc">Evaluate whether a target and format combinaison is only supported by the DDS container through GLI D...</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,118 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: file.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li><li class="navelem"><a class="el" href="dir_2c398834837487e57bd8c53ea39543b9.html">core</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">file.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>File helper functions.
<a href="#details">More...</a></p>
<p><a href="a00029_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:a00074"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html">gli</a></td></tr>
<tr class="memdesc:a00074"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace where all the classes and functions provided by GLI are exposed. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>File helper functions. </p>
<p>Definition in file <a class="el" href="a00029_source.html">file.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,114 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: file.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li><li class="navelem"><a class="el" href="dir_2c398834837487e57bd8c53ea39543b9.html">core</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">file.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="a00029.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &lt;cstdio&gt;</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00074.html">gli</a>{</div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;{</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; FILE* open_file(<span class="keyword">const</span> <span class="keywordtype">char</span> *Filename, <span class="keyword">const</span> <span class="keywordtype">char</span> *mode);</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;}<span class="comment">//namespace detail</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;}<span class="comment">//namespace gli</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &quot;./file.inl&quot;</span></div>
<div class="ttc" id="a00074_html"><div class="ttname"><a href="a00074.html">gli</a></div><div class="ttdoc">Namespace where all the classes and functions provided by GLI are exposed. </div><div class="ttdef"><b>Definition:</b> <a href="a00020_source.html#l00006">clear.hpp:6</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,125 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: filter.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li><li class="navelem"><a class="el" href="dir_2c398834837487e57bd8c53ea39543b9.html">core</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#enum-members">Enumerations</a> </div>
<div class="headertitle">
<div class="title">filter.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Include to use filter enum, to select filtering methods.
<a href="#details">More...</a></p>
<p><a href="a00030_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:a00074"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html">gli</a></td></tr>
<tr class="memdesc:a00074"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace where all the classes and functions provided by GLI are exposed. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:a610876e02cee64e29fe4376ffeb6b9b9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a610876e02cee64e29fe4376ffeb6b9b9"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">filter</a> <tr class="memdesc:a610876e02cee64e29fe4376ffeb6b9b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Texture filtring modes. <br /></td></tr>
<tr class="separator:a610876e02cee64e29fe4376ffeb6b9b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Include to use filter enum, to select filtering methods. </p>
<p>Definition in file <a class="el" href="a00030_source.html">filter.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,122 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: filter.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li><li class="navelem"><a class="el" href="dir_2c398834837487e57bd8c53ea39543b9.html">core</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">filter.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="a00030.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00074.html">gli</a></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;{</div>
<div class="line"><a name="l00009"></a><span class="lineno"><a class="line" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9"> 9</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">filter</a></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160; {</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; FILTER_NONE = 0,</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; FILTER_NEAREST, FILTER_FIRST = FILTER_NEAREST,</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; FILTER_LINEAR, FILTER_LAST = FILTER_LINEAR</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; };</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keyword">enum</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; {</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; FILTER_COUNT = FILTER_LAST - FILTER_FIRST + 1,</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; FILTER_INVALID = -1</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; };</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;}<span class="comment">//namespace gli</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;filter.inl&quot;</span></div>
<div class="ttc" id="a00074_html_a610876e02cee64e29fe4376ffeb6b9b9"><div class="ttname"><a href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">gli::filter</a></div><div class="ttdeci">filter</div><div class="ttdoc">Texture filtring modes. </div><div class="ttdef"><b>Definition:</b> <a href="a00030_source.html#l00009">filter.hpp:9</a></div></div>
<div class="ttc" id="a00074_html"><div class="ttname"><a href="a00074.html">gli</a></div><div class="ttdoc">Namespace where all the classes and functions provided by GLI are exposed. </div><div class="ttdef"><b>Definition:</b> <a href="a00020_source.html#l00006">clear.hpp:6</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,493 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: filter_compute.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li><li class="navelem"><a class="el" href="dir_2c398834837487e57bd8c53ea39543b9.html">core</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">filter_compute.hpp</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00030.html">filter.hpp</a>&quot;</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &quot;coord.hpp&quot;</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#include &lt;glm/gtc/integer.hpp&gt;</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;</div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00074.html">gli</a>{</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;{</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160; <span class="keyword">enum</span> dimension</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; {</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; DIMENSION_1D,</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; DIMENSION_2D,</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; DIMENSION_3D</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; };</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">struct </span>interpolate</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; {</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">float</span> type;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; };</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">template</span> &lt;&gt;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">struct </span>interpolate&lt;double&gt;</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; {</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">double</span> type;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; };</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">template</span> &lt;&gt;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">struct </span>interpolate&lt;long double&gt;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; {</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">long</span> <span class="keywordtype">double</span> type;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; };</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">template</span> &lt;dimension Dimension, <span class="keyword">typename</span> texture_type, <span class="keyword">typename</span> <span class="keywordtype">int</span>erpolate_type, <span class="keyword">typename</span> normalized_type, <span class="keyword">typename</span> fetch_type, <span class="keyword">typename</span> texel_type&gt;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">struct </span>filterBase</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; {</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> texture_type::size_type size_type;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> texture_type::extent_type extent_type;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">typedef</span> texel_type(*filterFunc)(</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; texture_type <span class="keyword">const</span> &amp; Texture, fetch_type Fetch, normalized_type <span class="keyword">const</span> &amp; SampleCoordWrap,</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; size_type Layer, size_type Face, interpolate_type Level,</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; texel_type <span class="keyword">const</span> &amp; BorderColor);</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; };</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">template</span> &lt;dimension Dimension, <span class="keyword">typename</span> texture_type, <span class="keyword">typename</span> <span class="keywordtype">int</span>erpolate_type, <span class="keyword">typename</span> normalized_type, <span class="keyword">typename</span> fetch_type, <span class="keyword">typename</span> texel_type, <span class="keywordtype">bool</span> is_<span class="keywordtype">float</span> = true, <span class="keywordtype">bool</span> support_border = true&gt;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">struct </span>nearest : <span class="keyword">public</span> filterBase&lt;Dimension, texture_type, interpolate_type, normalized_type, fetch_type, texel_type&gt;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; {</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">typedef</span> filterBase&lt;Dimension, texture_type, interpolate_type, normalized_type, fetch_type, texel_type&gt; base_type;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> base_type::size_type size_type;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> base_type::extent_type extent_type;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">typedef</span> coord_nearest&lt;extent_type, normalized_type&gt; coord_type;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">static</span> texel_type call(texture_type <span class="keyword">const</span> &amp; Texture, fetch_type Fetch, normalized_type <span class="keyword">const</span> &amp; SampleCoordWrap, size_type Layer, size_type Face, size_type Level, texel_type <span class="keyword">const</span> &amp; BorderColor)</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; extent_type <span class="keyword">const</span> TexelDim(Texture.extent(Level));</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; normalized_type <span class="keyword">const</span> TexelLast(normalized_type(TexelDim) - normalized_type(1));</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="comment">//extent_type const TexelCoord(SampleCoordWrap * TexelLast + interpolate_type(0.5));</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; extent_type <span class="keyword">const</span> TexelCoord = extent_type(round(SampleCoordWrap * TexelLast));</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">typename</span> extent_type::bool_type <span class="keyword">const</span> UseTexelCoord = in_interval(TexelCoord, extent_type(0), TexelDim - 1);</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; texel_type Texel(BorderColor);</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">if</span>(all(UseTexelCoord))</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; Texel = Fetch(Texture, TexelCoord, Layer, Face, Level);</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">return</span> Texel;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; };</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">template</span> &lt;dimension Dimension, <span class="keyword">typename</span> texture_type, <span class="keyword">typename</span> <span class="keywordtype">int</span>erpolate_type, <span class="keyword">typename</span> normalized_type, <span class="keyword">typename</span> fetch_type, <span class="keyword">typename</span> texel_type&gt;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">struct </span>nearest&lt;Dimension, texture_type, interpolate_type, normalized_type, fetch_type, texel_type, true, false&gt; : <span class="keyword">public</span> filterBase&lt;Dimension, texture_type, interpolate_type, normalized_type, fetch_type, texel_type&gt;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">typedef</span> filterBase&lt;Dimension, texture_type, interpolate_type, normalized_type, fetch_type, texel_type&gt; base_type;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> base_type::size_type size_type;</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> base_type::extent_type extent_type;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keyword">typedef</span> coord_nearest&lt;extent_type, normalized_type&gt; coord_type;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">static</span> texel_type call(texture_type <span class="keyword">const</span> &amp; Texture, fetch_type Fetch, normalized_type <span class="keyword">const</span> &amp; SampleCoordWrap, size_type Layer, size_type Face, size_type Level, texel_type <span class="keyword">const</span> &amp; BorderColor)</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; {</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; normalized_type <span class="keyword">const</span> TexelLast(normalized_type(Texture.extent(Level)) - normalized_type(1));</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; extent_type <span class="keyword">const</span> TexelCoord(SampleCoordWrap * TexelLast + interpolate_type(0.5));</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="comment">//extent_type const TexelCoord = extent_type(round(SampleCoordWrap * TexelLast));</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">return</span> Fetch(Texture, TexelCoord, Layer, Face, Level);</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; };</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keyword">template</span> &lt;dimension Dimension, <span class="keyword">typename</span> texture_type, <span class="keyword">typename</span> <span class="keywordtype">int</span>erpolate_type, <span class="keyword">typename</span> normalized_type, <span class="keyword">typename</span> fetch_type, <span class="keyword">typename</span> texel_type, <span class="keywordtype">bool</span> is_<span class="keywordtype">float</span> = true, <span class="keywordtype">bool</span> support_border = true&gt;</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">struct </span>linear : <span class="keyword">public</span> filterBase&lt;Dimension, texture_type, interpolate_type, normalized_type, fetch_type, texel_type&gt;</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">typedef</span> filterBase&lt;Dimension, texture_type, interpolate_type, normalized_type, fetch_type, texel_type&gt; base_type;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> base_type::size_type size_type;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> base_type::extent_type extent_type;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">static</span> texel_type call(texture_type <span class="keyword">const</span> &amp; Texture, fetch_type Fetch, normalized_type <span class="keyword">const</span> &amp; SampleCoordWrap, size_type Layer, size_type Face, size_type Level, texel_type <span class="keyword">const</span>&amp; BorderColor)</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; {</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">return</span> texel_type(0);</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; };</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texture_type, <span class="keyword">typename</span> <span class="keywordtype">int</span>erpolate_type, <span class="keyword">typename</span> normalized_type, <span class="keyword">typename</span> fetch_type, <span class="keyword">typename</span> texel_type&gt;</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keyword">struct </span>linear&lt;DIMENSION_1D, texture_type, interpolate_type, normalized_type, fetch_type, texel_type, true, true&gt; : <span class="keyword">public</span> filterBase&lt;DIMENSION_1D, texture_type, interpolate_type, normalized_type, fetch_type, texel_type&gt;</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keyword">typedef</span> filterBase&lt;DIMENSION_1D, texture_type, interpolate_type, normalized_type, fetch_type, texel_type&gt; base_type;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> base_type::size_type size_type;</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> base_type::extent_type extent_type;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keyword">typedef</span> coord_linear_border&lt;extent_type, normalized_type&gt; coord_type;</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keyword">static</span> texel_type call(texture_type <span class="keyword">const</span> &amp; Texture, fetch_type Fetch, normalized_type <span class="keyword">const</span> &amp; SampleCoordWrap, size_type Layer, size_type Face, size_type Level, texel_type <span class="keyword">const</span> &amp; BorderColor)</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; coord_type <span class="keyword">const</span>&amp; Coord = make_coord_linear_border(Texture.extent(Level), SampleCoordWrap);</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; texel_type Texel0(BorderColor);</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span>(Coord.UseTexelFloor.s)</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; Texel0 = Fetch(Texture, extent_type(Coord.TexelFloor.s), Layer, Face, Level);</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; texel_type Texel1(BorderColor);</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">if</span>(Coord.UseTexelCeil.s)</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; Texel1 = Fetch(Texture, extent_type(Coord.TexelCeil.s), Layer, Face, Level);</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">return</span> mix(Texel0, Texel1, Coord.Blend.s);</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; };</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texture_type, <span class="keyword">typename</span> <span class="keywordtype">int</span>erpolate_type, <span class="keyword">typename</span> normalized_type, <span class="keyword">typename</span> fetch_type, <span class="keyword">typename</span> texel_type&gt;</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keyword">struct </span>linear&lt;DIMENSION_1D, texture_type, interpolate_type, normalized_type, fetch_type, texel_type, true, false&gt; : <span class="keyword">public</span> filterBase&lt;DIMENSION_1D, texture_type, interpolate_type, normalized_type, fetch_type, texel_type&gt;</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; {</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keyword">typedef</span> filterBase&lt;DIMENSION_1D, texture_type, interpolate_type, normalized_type, fetch_type, texel_type&gt; base_type;</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> base_type::size_type size_type;</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> base_type::extent_type extent_type;</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keyword">typedef</span> coord_linear&lt;extent_type, normalized_type&gt; coord_type;</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keyword">static</span> texel_type call(texture_type <span class="keyword">const</span> &amp; Texture, fetch_type Fetch, normalized_type <span class="keyword">const</span> &amp; SampleCoordWrap, size_type Layer, size_type Face, size_type Level, texel_type <span class="keyword">const</span> &amp; BorderColor)</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; coord_type <span class="keyword">const</span>&amp; Coord = make_coord_linear(Texture.extent(Level), SampleCoordWrap);</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; texel_type <span class="keyword">const</span> Texel0 = Fetch(Texture, extent_type(Coord.TexelFloor.s), Layer, Face, Level);</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; texel_type <span class="keyword">const</span> Texel1 = Fetch(Texture, extent_type(Coord.TexelCeil.s), Layer, Face, Level);</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">return</span> mix(Texel0, Texel1, Coord.Blend.s);</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; };</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texture_type, <span class="keyword">typename</span> <span class="keywordtype">int</span>erpolate_type, <span class="keyword">typename</span> normalized_type, <span class="keyword">typename</span> fetch_type, <span class="keyword">typename</span> texel_type&gt;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keyword">struct </span>linear&lt;DIMENSION_2D, texture_type, interpolate_type, normalized_type, fetch_type, texel_type, true, true&gt; : <span class="keyword">public</span> filterBase&lt;DIMENSION_2D, texture_type, interpolate_type, normalized_type, fetch_type, texel_type&gt;</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keyword">typedef</span> filterBase&lt;DIMENSION_2D, texture_type, interpolate_type, normalized_type, fetch_type, texel_type&gt; base_type;</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> base_type::size_type size_type;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> base_type::extent_type extent_type;</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keyword">typedef</span> coord_linear_border&lt;extent_type, normalized_type&gt; coord_type;</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">static</span> texel_type call(texture_type <span class="keyword">const</span>&amp; Texture, fetch_type Fetch, normalized_type <span class="keyword">const</span>&amp; SampleCoordWrap, size_type Layer, size_type Face, size_type Level, texel_type <span class="keyword">const</span>&amp; BorderColor)</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; {</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; coord_type <span class="keyword">const</span>&amp; Coord = make_coord_linear_border(Texture.extent(Level), SampleCoordWrap);</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; texel_type Texel00(BorderColor);</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">if</span>(Coord.UseTexelFloor.s &amp;&amp; Coord.UseTexelFloor.t)</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; Texel00 = Fetch(Texture, extent_type(Coord.TexelFloor.s, Coord.TexelFloor.t), Layer, Face, Level);</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; texel_type Texel10(BorderColor);</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">if</span>(Coord.UseTexelCeil.s &amp;&amp; Coord.UseTexelFloor.t)</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; Texel10 = Fetch(Texture, extent_type(Coord.TexelCeil.s, Coord.TexelFloor.t), Layer, Face, Level);</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; texel_type Texel11(BorderColor);</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">if</span>(Coord.UseTexelCeil.s &amp;&amp; Coord.UseTexelCeil.t)</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; Texel11 = Fetch(Texture, extent_type(Coord.TexelCeil.s, Coord.TexelCeil.t), Layer, Face, Level);</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; texel_type Texel01(BorderColor);</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">if</span>(Coord.UseTexelFloor.s &amp;&amp; Coord.UseTexelCeil.t)</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; Texel01 = Fetch(Texture, extent_type(Coord.TexelFloor.s, Coord.TexelCeil.t), Layer, Face, Level);</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; texel_type <span class="keyword">const</span> ValueA(mix(Texel00, Texel10, Coord.Blend.s));</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; texel_type <span class="keyword">const</span> ValueB(mix(Texel01, Texel11, Coord.Blend.s));</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">return</span> mix(ValueA, ValueB, Coord.Blend.t);</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; };</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texture_type, <span class="keyword">typename</span> <span class="keywordtype">int</span>erpolate_type, <span class="keyword">typename</span> normalized_type, <span class="keyword">typename</span> fetch_type, <span class="keyword">typename</span> texel_type&gt;</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keyword">struct </span>linear&lt;DIMENSION_2D, texture_type, interpolate_type, normalized_type, fetch_type, texel_type, true, false&gt; : <span class="keyword">public</span> filterBase&lt;DIMENSION_2D, texture_type, interpolate_type, normalized_type, fetch_type, texel_type&gt;</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; {</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keyword">typedef</span> filterBase&lt;DIMENSION_2D, texture_type, interpolate_type, normalized_type, fetch_type, texel_type&gt; base_type;</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> base_type::size_type size_type;</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> base_type::extent_type extent_type;</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keyword">typedef</span> coord_linear&lt;extent_type, normalized_type&gt; coord_type;</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keyword">static</span> texel_type call(texture_type <span class="keyword">const</span>&amp; Texture, fetch_type Fetch, normalized_type <span class="keyword">const</span>&amp; SampleCoordWrap, size_type Layer, size_type Face, size_type Level, texel_type <span class="keyword">const</span>&amp; BorderColor)</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; {</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; coord_type <span class="keyword">const</span>&amp; Coord = make_coord_linear(Texture.extent(Level), SampleCoordWrap);</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; texel_type <span class="keyword">const</span>&amp; Texel00 = Fetch(Texture, extent_type(Coord.TexelFloor.s, Coord.TexelFloor.t), Layer, Face, Level);</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; texel_type <span class="keyword">const</span>&amp; Texel10 = Fetch(Texture, extent_type(Coord.TexelCeil.s, Coord.TexelFloor.t), Layer, Face, Level);</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; texel_type <span class="keyword">const</span>&amp; Texel11 = Fetch(Texture, extent_type(Coord.TexelCeil.s, Coord.TexelCeil.t), Layer, Face, Level);</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; texel_type <span class="keyword">const</span>&amp; Texel01 = Fetch(Texture, extent_type(Coord.TexelFloor.s, Coord.TexelCeil.t), Layer, Face, Level);</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; texel_type <span class="keyword">const</span> ValueA(mix(Texel00, Texel10, Coord.Blend.s));</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; texel_type <span class="keyword">const</span> ValueB(mix(Texel01, Texel11, Coord.Blend.s));</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">return</span> mix(ValueA, ValueB, Coord.Blend.t);</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; }</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; };</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texture_type, <span class="keyword">typename</span> <span class="keywordtype">int</span>erpolate_type, <span class="keyword">typename</span> normalized_type, <span class="keyword">typename</span> fetch_type, <span class="keyword">typename</span> texel_type&gt;</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keyword">struct </span>linear&lt;DIMENSION_3D, texture_type, interpolate_type, normalized_type, fetch_type, texel_type, true, true&gt; : <span class="keyword">public</span> filterBase&lt;DIMENSION_3D, texture_type, interpolate_type, normalized_type, fetch_type, texel_type&gt;</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; {</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keyword">typedef</span> filterBase&lt;DIMENSION_3D, texture_type, interpolate_type, normalized_type, fetch_type, texel_type&gt; base_type;</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> base_type::size_type size_type;</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> base_type::extent_type extent_type;</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keyword">typedef</span> coord_linear_border&lt;extent_type, normalized_type&gt; coord_type;</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keyword">static</span> texel_type call(texture_type <span class="keyword">const</span>&amp; Texture, fetch_type Fetch, normalized_type <span class="keyword">const</span>&amp; SampleCoordWrap, size_type Layer, size_type Face, size_type Level, texel_type <span class="keyword">const</span>&amp; BorderColor)</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; {</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; coord_type <span class="keyword">const</span>&amp; Coord = make_coord_linear_border(Texture.extent(Level), SampleCoordWrap);</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; texel_type Texel000(BorderColor);</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">if</span>(Coord.UseTexelFloor.s &amp;&amp; Coord.UseTexelFloor.t &amp;&amp; Coord.UseTexelFloor.p)</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; Texel000 = Fetch(Texture, extent_type(Coord.TexelFloor.s, Coord.TexelFloor.t, Coord.TexelFloor.p), Layer, Face, Level);</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; texel_type Texel100(BorderColor);</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">if</span>(Coord.UseTexelCeil.s &amp;&amp; Coord.UseTexelFloor.t &amp;&amp; Coord.UseTexelFloor.p)</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; Texel100 = Fetch(Texture, extent_type(Coord.TexelCeil.s, Coord.TexelFloor.t, Coord.TexelFloor.p), Layer, Face, Level);</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; texel_type Texel110(BorderColor);</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">if</span>(Coord.UseTexelCeil.s &amp;&amp; Coord.UseTexelCeil.t &amp;&amp; Coord.UseTexelFloor.p)</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; Texel110 = Fetch(Texture, extent_type(Coord.TexelCeil.s, Coord.TexelCeil.t, Coord.TexelFloor.p), Layer, Face, Level);</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; texel_type Texel010(BorderColor);</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">if</span>(Coord.UseTexelFloor.s &amp;&amp; Coord.UseTexelCeil.t &amp;&amp; Coord.UseTexelFloor.p)</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; Texel010 = Fetch(Texture, extent_type(Coord.TexelFloor.s, Coord.TexelCeil.t, Coord.TexelFloor.p), Layer, Face, Level);</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; texel_type Texel001(BorderColor);</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">if</span> (Coord.UseTexelFloor.s &amp;&amp; Coord.UseTexelFloor.t &amp;&amp; Coord.UseTexelCeil.p)</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; Texel001 = Fetch(Texture, extent_type(Coord.TexelFloor.s, Coord.TexelFloor.t, Coord.TexelCeil.p), Layer, Face, Level);</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; texel_type Texel101(BorderColor);</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">if</span>(Coord.UseTexelCeil.s &amp;&amp; Coord.UseTexelFloor.t &amp;&amp; Coord.UseTexelCeil.p)</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; Texel101 = Fetch(Texture, extent_type(Coord.TexelCeil.s, Coord.TexelFloor.t, Coord.TexelCeil.p), Layer, Face, Level);</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; texel_type Texel111(BorderColor);</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">if</span>(Coord.UseTexelCeil.s &amp;&amp; Coord.UseTexelCeil.t &amp;&amp; Coord.UseTexelCeil.p)</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; Texel111 = Fetch(Texture, extent_type(Coord.TexelCeil.s, Coord.TexelCeil.t, Coord.TexelCeil.p), Layer, Face, Level);</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; texel_type Texel011(BorderColor);</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">if</span>(Coord.UseTexelFloor.s &amp;&amp; Coord.UseTexelCeil.t &amp;&amp; Coord.UseTexelCeil.p)</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; Texel011 = Fetch(Texture, extent_type(Coord.TexelFloor.s, Coord.TexelCeil.t, Coord.TexelCeil.p), Layer, Face, Level);</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; texel_type <span class="keyword">const</span> ValueA(mix(Texel000, Texel100, Coord.Blend.s));</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; texel_type <span class="keyword">const</span> ValueB(mix(Texel010, Texel110, Coord.Blend.s));</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; texel_type <span class="keyword">const</span> ValueC(mix(Texel001, Texel101, Coord.Blend.s));</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; texel_type <span class="keyword">const</span> ValueD(mix(Texel011, Texel111, Coord.Blend.s));</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; texel_type <span class="keyword">const</span> ValueE(mix(ValueA, ValueB, Coord.Blend.t));</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; texel_type <span class="keyword">const</span> ValueF(mix(ValueC, ValueD, Coord.Blend.t));</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">return</span> mix(ValueE, ValueF, Coord.Blend.p);</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; }</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; };</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texture_type, <span class="keyword">typename</span> <span class="keywordtype">int</span>erpolate_type, <span class="keyword">typename</span> normalized_type, <span class="keyword">typename</span> fetch_type, <span class="keyword">typename</span> texel_type&gt;</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keyword">struct </span>linear&lt;DIMENSION_3D, texture_type, interpolate_type, normalized_type, fetch_type, texel_type, true, false&gt; : <span class="keyword">public</span> filterBase&lt;DIMENSION_3D, texture_type, interpolate_type, normalized_type, fetch_type, texel_type&gt;</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; {</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keyword">typedef</span> filterBase&lt;DIMENSION_3D, texture_type, interpolate_type, normalized_type, fetch_type, texel_type&gt; base_type;</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> base_type::size_type size_type;</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> base_type::extent_type extent_type;</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keyword">typedef</span> coord_linear&lt;extent_type, normalized_type&gt; coord_type;</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keyword">static</span> texel_type call(texture_type <span class="keyword">const</span> &amp; Texture, fetch_type Fetch, normalized_type <span class="keyword">const</span> &amp; SampleCoordWrap, size_type Layer, size_type Face, size_type Level, texel_type <span class="keyword">const</span> &amp; BorderColor)</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; {</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; coord_type <span class="keyword">const</span> &amp; Coord = make_coord_linear(Texture.extent(Level), SampleCoordWrap);</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; texel_type <span class="keyword">const</span> &amp; Texel000 = Fetch(Texture, extent_type(Coord.TexelFloor.s, Coord.TexelFloor.t, Coord.TexelFloor.p), Layer, Face, Level);</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; texel_type <span class="keyword">const</span> &amp; Texel100 = Fetch(Texture, extent_type(Coord.TexelCeil.s, Coord.TexelFloor.t, Coord.TexelFloor.p), Layer, Face, Level);</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; texel_type <span class="keyword">const</span> &amp; Texel110 = Fetch(Texture, extent_type(Coord.TexelCeil.s, Coord.TexelCeil.t, Coord.TexelFloor.p), Layer, Face, Level);</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; texel_type <span class="keyword">const</span> &amp; Texel010 = Fetch(Texture, extent_type(Coord.TexelFloor.s, Coord.TexelCeil.t, Coord.TexelFloor.p), Layer, Face, Level);</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; texel_type <span class="keyword">const</span> &amp; Texel001 = Fetch(Texture, extent_type(Coord.TexelFloor.s, Coord.TexelFloor.t, Coord.TexelCeil.p), Layer, Face, Level);</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; texel_type <span class="keyword">const</span> &amp; Texel101 = Fetch(Texture, extent_type(Coord.TexelCeil.s, Coord.TexelFloor.t, Coord.TexelCeil.p), Layer, Face, Level);</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; texel_type <span class="keyword">const</span> &amp; Texel111 = Fetch(Texture, extent_type(Coord.TexelCeil.s, Coord.TexelCeil.t, Coord.TexelCeil.p), Layer, Face, Level);</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; texel_type <span class="keyword">const</span> &amp; Texel011 = Fetch(Texture, extent_type(Coord.TexelFloor.s, Coord.TexelCeil.t, Coord.TexelCeil.p), Layer, Face, Level);</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; texel_type <span class="keyword">const</span> ValueA(mix(Texel000, Texel100, Coord.Blend.s));</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; texel_type <span class="keyword">const</span> ValueB(mix(Texel010, Texel110, Coord.Blend.s));</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; texel_type <span class="keyword">const</span> ValueC(mix(Texel001, Texel101, Coord.Blend.s));</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; texel_type <span class="keyword">const</span> ValueD(mix(Texel011, Texel111, Coord.Blend.s));</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; texel_type <span class="keyword">const</span> ValueE(mix(ValueA, ValueB, Coord.Blend.t));</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; texel_type <span class="keyword">const</span> ValueF(mix(ValueC, ValueD, Coord.Blend.t));</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">return</span> mix(ValueE, ValueF, Coord.Blend.p);</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; }</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; };</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keyword">template</span> &lt;dimension Dimension, <span class="keyword">typename</span> texture_type, <span class="keyword">typename</span> <span class="keywordtype">int</span>erpolate_type, <span class="keyword">typename</span> normalized_type, <span class="keyword">typename</span> fetch_type, <span class="keyword">typename</span> texel_type, <span class="keywordtype">bool</span> is_<span class="keywordtype">float</span>, <span class="keywordtype">bool</span> support_border&gt;</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keyword">struct </span>nearest_mipmap_nearest : <span class="keyword">public</span> filterBase&lt;Dimension, texture_type, interpolate_type, normalized_type, fetch_type, texel_type&gt;</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; {</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keyword">typedef</span> filterBase&lt;Dimension, texture_type, interpolate_type, normalized_type, fetch_type, texel_type&gt; base_type;</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> base_type::size_type size_type;</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> base_type::extent_type extent_type;</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keyword">typedef</span> coord_linear_border&lt;extent_type, normalized_type&gt; coord_type;</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keyword">static</span> texel_type call(texture_type <span class="keyword">const</span> &amp; Texture, fetch_type Fetch, normalized_type <span class="keyword">const</span> &amp; SampleCoordWrap, size_type Layer, size_type Face, interpolate_type Level, texel_type <span class="keyword">const</span> &amp; BorderColor)</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; {</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">return</span> nearest&lt;Dimension, texture_type, interpolate_type, normalized_type, fetch_type, texel_type, is_float, support_border&gt;::call(Texture, Fetch, SampleCoordWrap, Layer, Face, glm::iround(Level), BorderColor);</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; }</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; };</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keyword">template</span> &lt;dimension Dimension, <span class="keyword">typename</span> texture_type, <span class="keyword">typename</span> <span class="keywordtype">int</span>erpolate_type, <span class="keyword">typename</span> normalized_type, <span class="keyword">typename</span> fetch_type, <span class="keyword">typename</span> texel_type, <span class="keywordtype">bool</span> is_<span class="keywordtype">float</span>, <span class="keywordtype">bool</span> support_border&gt;</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keyword">struct </span>nearest_mipmap_linear : <span class="keyword">public</span> filterBase&lt;Dimension, texture_type, interpolate_type, normalized_type, fetch_type, texel_type&gt;</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; {</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keyword">typedef</span> filterBase&lt;Dimension, texture_type, interpolate_type, normalized_type, fetch_type, texel_type&gt; base_type;</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> base_type::size_type size_type;</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> base_type::extent_type extent_type;</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keyword">typedef</span> coord_linear_border&lt;extent_type, normalized_type&gt; coord_type;</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keyword">static</span> texel_type call(texture_type <span class="keyword">const</span> &amp; Texture, fetch_type Fetch, normalized_type <span class="keyword">const</span> &amp; SampleCoordWrap, size_type Layer, size_type Face, interpolate_type Level, texel_type <span class="keyword">const</span> &amp; BorderColor)</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; {</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; texel_type <span class="keyword">const</span> MinTexel = nearest&lt;Dimension, texture_type, interpolate_type, normalized_type, fetch_type, texel_type, is_float, support_border&gt;::call(Texture, Fetch, SampleCoordWrap, Layer, Face, static_cast&lt;size_type&gt;(floor(Level)), BorderColor);</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; texel_type <span class="keyword">const</span> MaxTexel = nearest&lt;Dimension, texture_type, interpolate_type, normalized_type, fetch_type, texel_type, is_float, support_border&gt;::call(Texture, Fetch, SampleCoordWrap, Layer, Face, static_cast&lt;size_type&gt;(ceil(Level)), BorderColor);</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">return</span> mix(MinTexel, MaxTexel, fract(Level));</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; };</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keyword">template</span> &lt;dimension Dimension, <span class="keyword">typename</span> texture_type, <span class="keyword">typename</span> <span class="keywordtype">int</span>erpolate_type, <span class="keyword">typename</span> normalized_type, <span class="keyword">typename</span> fetch_type, <span class="keyword">typename</span> texel_type, <span class="keywordtype">bool</span> is_<span class="keywordtype">float</span>, <span class="keywordtype">bool</span> support_border&gt;</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keyword">struct </span>linear_mipmap_nearest : <span class="keyword">public</span> filterBase&lt;Dimension, texture_type, interpolate_type, normalized_type, fetch_type, texel_type&gt;</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; {</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keyword">typedef</span> filterBase&lt;Dimension, texture_type, interpolate_type, normalized_type, fetch_type, texel_type&gt; base_type;</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> base_type::size_type size_type;</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> base_type::extent_type extent_type;</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keyword">typedef</span> coord_linear_border&lt;extent_type, normalized_type&gt; coord_type;</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keyword">static</span> texel_type call(texture_type <span class="keyword">const</span> &amp; Texture, fetch_type Fetch, normalized_type <span class="keyword">const</span> &amp; SampleCoordWrap, size_type Layer, size_type Face, interpolate_type Level, texel_type <span class="keyword">const</span> &amp; BorderColor)</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; {</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">return</span> linear&lt;Dimension, texture_type, interpolate_type, normalized_type, fetch_type, texel_type, is_float, support_border&gt;::call(Texture, Fetch, SampleCoordWrap, Layer, Face, glm::iround(Level), BorderColor);</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; }</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; };</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keyword">template</span> &lt;dimension Dimension, <span class="keyword">typename</span> texture_type, <span class="keyword">typename</span> <span class="keywordtype">int</span>erpolate_type, <span class="keyword">typename</span> normalized_type, <span class="keyword">typename</span> fetch_type, <span class="keyword">typename</span> texel_type, <span class="keywordtype">bool</span> is_<span class="keywordtype">float</span>, <span class="keywordtype">bool</span> support_border&gt;</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keyword">struct </span>linear_mipmap_linear : <span class="keyword">public</span> filterBase&lt;Dimension, texture_type, interpolate_type, normalized_type, fetch_type, texel_type&gt;</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; {</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keyword">typedef</span> filterBase&lt;Dimension, texture_type, interpolate_type, normalized_type, fetch_type, texel_type&gt; base_type;</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> base_type::size_type size_type;</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> base_type::extent_type extent_type;</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keyword">typedef</span> coord_linear_border&lt;extent_type, normalized_type&gt; coord_type;</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keyword">static</span> texel_type call(texture_type <span class="keyword">const</span> &amp; Texture, fetch_type Fetch, normalized_type <span class="keyword">const</span> &amp; SampleCoordWrap, size_type Layer, size_type Face, interpolate_type Level, texel_type <span class="keyword">const</span> &amp; BorderColor)</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; {</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; size_type <span class="keyword">const</span> FloorLevel = <span class="keyword">static_cast&lt;</span>size_type<span class="keyword">&gt;</span>(floor(Level));</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; size_type <span class="keyword">const</span> CeilLevel = <span class="keyword">static_cast&lt;</span>size_type<span class="keyword">&gt;</span>(ceil(Level));</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; texel_type <span class="keyword">const</span> MinTexel = linear&lt;Dimension, texture_type, interpolate_type, normalized_type, fetch_type, texel_type, is_float, support_border&gt;::call(Texture, Fetch, SampleCoordWrap, Layer, Face, FloorLevel, BorderColor);</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; texel_type <span class="keyword">const</span> MaxTexel = linear&lt;Dimension, texture_type, interpolate_type, normalized_type, fetch_type, texel_type, is_float, support_border&gt;::call(Texture, Fetch, SampleCoordWrap, Layer, Face, CeilLevel, BorderColor);</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">return</span> mix(MinTexel, MaxTexel, fract(Level));</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; };</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> filter_type, dimension Dimensions, <span class="keyword">typename</span> texture_type, <span class="keyword">typename</span> <span class="keywordtype">int</span>erpolate_type, <span class="keyword">typename</span> normalized_type, <span class="keyword">typename</span> fetch_type, <span class="keyword">typename</span> texel_type, <span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keyword">inline</span> filter_type get_filter(<a class="code" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">filter</a> Mip, <a class="code" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">filter</a> Min, <span class="keywordtype">bool</span> Border)</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; {</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keyword">static</span> filter_type Table[][FILTER_COUNT][2] =</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; {</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; {</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; {</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; nearest_mipmap_nearest&lt;Dimensions, texture_type, interpolate_type, normalized_type, fetch_type, texel_type, std::numeric_limits&lt;T&gt;::is_iec559, <span class="keyword">false</span>&gt;::call,</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; nearest_mipmap_nearest&lt;Dimensions, texture_type, interpolate_type, normalized_type, fetch_type, texel_type, std::numeric_limits&lt;T&gt;::is_iec559, <span class="keyword">true</span>&gt;::call</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; },</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; {</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; linear_mipmap_nearest&lt;Dimensions, texture_type, interpolate_type, normalized_type, fetch_type, texel_type, std::numeric_limits&lt;T&gt;::is_iec559, <span class="keyword">false</span>&gt;::call,</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; linear_mipmap_nearest&lt;Dimensions, texture_type, interpolate_type, normalized_type, fetch_type, texel_type, std::numeric_limits&lt;T&gt;::is_iec559, <span class="keyword">true</span>&gt;::call</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; }</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; },</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; {</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; {</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; nearest_mipmap_linear&lt;Dimensions, texture_type, interpolate_type, normalized_type, fetch_type, texel_type, std::numeric_limits&lt;T&gt;::is_iec559, <span class="keyword">false</span>&gt;::call,</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; nearest_mipmap_linear&lt;Dimensions, texture_type, interpolate_type, normalized_type, fetch_type, texel_type, std::numeric_limits&lt;T&gt;::is_iec559, <span class="keyword">true</span>&gt;::call</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; },</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; {</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; linear_mipmap_linear&lt;Dimensions, texture_type, interpolate_type, normalized_type, fetch_type, texel_type, std::numeric_limits&lt;T&gt;::is_iec559, <span class="keyword">false</span>&gt;::call,</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; linear_mipmap_linear&lt;Dimensions, texture_type, interpolate_type, normalized_type, fetch_type, texel_type, std::numeric_limits&lt;T&gt;::is_iec559, <span class="keyword">true</span>&gt;::call</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; }</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; }</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; };</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; static_assert(<span class="keyword">sizeof</span>(Table) / <span class="keyword">sizeof</span>(Table[0]) == FILTER_COUNT, <span class="stringliteral">&quot;GLI ERROR: &#39;Table&#39; doesn&#39;t match the number of supported filters&quot;</span>);</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; GLI_ASSERT(Table[Mip - FILTER_FIRST][Min - FILTER_FIRST][Border ? 1 : 0]);</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">return</span> Table[Mip - FILTER_FIRST][Min - FILTER_FIRST][Border ? 1 : 0];</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; }</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;}<span class="comment">//namespace detail</span></div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;}<span class="comment">//namespace gli</span></div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;</div>
<div class="ttc" id="a00030_html"><div class="ttname"><a href="a00030.html">filter.hpp</a></div><div class="ttdoc">Include to use filter enum, to select filtering methods. </div></div>
<div class="ttc" id="a00074_html_a610876e02cee64e29fe4376ffeb6b9b9"><div class="ttname"><a href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">gli::filter</a></div><div class="ttdeci">filter</div><div class="ttdoc">Texture filtring modes. </div><div class="ttdef"><b>Definition:</b> <a href="a00030_source.html#l00009">filter.hpp:9</a></div></div>
<div class="ttc" id="a00074_html"><div class="ttname"><a href="a00074.html">gli</a></div><div class="ttdoc">Namespace where all the classes and functions provided by GLI are exposed. </div><div class="ttdef"><b>Definition:</b> <a href="a00020_source.html#l00006">clear.hpp:6</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,118 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: flip.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li><li class="navelem"><a class="el" href="dir_2c398834837487e57bd8c53ea39543b9.html">core</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">flip.hpp</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="preprocessor">#include &lt;array&gt;</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;</div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#include &quot;../texture2d.hpp&quot;</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &quot;../texture2d_array.hpp&quot;</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &quot;../texture_cube.hpp&quot;</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#include &quot;../texture_cube_array.hpp&quot;</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00074.html">gli</a></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;{</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texture&gt;</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; texture flip(texture <span class="keyword">const</span> &amp; Texture);</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;}<span class="comment">//namespace gli</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;flip.inl&quot;</span></div>
<div class="ttc" id="a00074_html"><div class="ttname"><a href="a00074.html">gli</a></div><div class="ttdoc">Namespace where all the classes and functions provided by GLI are exposed. </div><div class="ttdef"><b>Definition:</b> <a href="a00020_source.html#l00006">clear.hpp:6</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,204 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: format.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">format.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Include to use the format enum and query properties of formats.
<a href="#details">More...</a></p>
<p><a href="a00033_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:a00074"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html">gli</a></td></tr>
<tr class="memdesc:a00074"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace where all the classes and functions provided by GLI are exposed. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:a387137c43ed9616d39ba90e890d181eb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a387137c43ed9616d39ba90e890d181eb"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a> <tr class="memdesc:a387137c43ed9616d39ba90e890d181eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Texture data format. <br /></td></tr>
<tr class="separator:a387137c43ed9616d39ba90e890d181eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</td></tr>
<tr class="memitem:a43317d2a6e2101377c67b8831ef2fd4c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a43317d2a6e2101377c67b8831ef2fd4c"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a43317d2a6e2101377c67b8831ef2fd4c">swizzle</a> <tr class="memdesc:a43317d2a6e2101377c67b8831ef2fd4c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Represent the source of a channel. <br /></td></tr>
<tr class="separator:a43317d2a6e2101377c67b8831ef2fd4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a8ed69f83293f50cafb2d147d609e2a96"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ed69f83293f50cafb2d147d609e2a96"></a>
ivec3&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a8ed69f83293f50cafb2d147d609e2a96">block_extent</a> (format Format)</td></tr>
<tr class="memdesc:a8ed69f83293f50cafb2d147d609e2a96"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the dimensions in texels of the block for a format. <br /></td></tr>
<tr class="separator:a8ed69f83293f50cafb2d147d609e2a96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8ca05b97f1deac7bf5a50468868a449"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae8ca05b97f1deac7bf5a50468868a449"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#ae8ca05b97f1deac7bf5a50468868a449">block_size</a> (format Format)</td></tr>
<tr class="memdesc:ae8ca05b97f1deac7bf5a50468868a449"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the size in bytes of a block for a format. <br /></td></tr>
<tr class="separator:ae8ca05b97f1deac7bf5a50468868a449"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55700a60464d27ea9d2f03d80c8b76d8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55700a60464d27ea9d2f03d80c8b76d8"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a55700a60464d27ea9d2f03d80c8b76d8">component_count</a> (format Format)</td></tr>
<tr class="memdesc:a55700a60464d27ea9d2f03d80c8b76d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the number of components of a format. <br /></td></tr>
<tr class="separator:a55700a60464d27ea9d2f03d80c8b76d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf97bb3a068c322d88797b0e18209e16"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf97bb3a068c322d88797b0e18209e16"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#abf97bb3a068c322d88797b0e18209e16">is_channel</a> (swizzle Swizzle)</td></tr>
<tr class="memdesc:abf97bb3a068c322d88797b0e18209e16"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine whether the Swizzle value represent a channel. <br /></td></tr>
<tr class="separator:abf97bb3a068c322d88797b0e18209e16"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0034114c47df4c39d48ba964ab823f98"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0034114c47df4c39d48ba964ab823f98"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a0034114c47df4c39d48ba964ab823f98">is_compressed</a> (format Format)</td></tr>
<tr class="memdesc:a0034114c47df4c39d48ba964ab823f98"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate whether a format is compressed. <br /></td></tr>
<tr class="separator:a0034114c47df4c39d48ba964ab823f98"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33f4f2b1c711dc0dec52b78ea0a8b2e1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a33f4f2b1c711dc0dec52b78ea0a8b2e1"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a33f4f2b1c711dc0dec52b78ea0a8b2e1">is_float</a> (format Format)</td></tr>
<tr class="memdesc:a33f4f2b1c711dc0dec52b78ea0a8b2e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate whether the format is an float format. <br /></td></tr>
<tr class="separator:a33f4f2b1c711dc0dec52b78ea0a8b2e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a760a9e4d384a6573979a9c6ffb6c68c1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a760a9e4d384a6573979a9c6ffb6c68c1"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a760a9e4d384a6573979a9c6ffb6c68c1">is_integer</a> (format Format)</td></tr>
<tr class="memdesc:a760a9e4d384a6573979a9c6ffb6c68c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate whether the format is an integer format. <br /></td></tr>
<tr class="separator:a760a9e4d384a6573979a9c6ffb6c68c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17d5d727bab578c1158ab6c1d6875194"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a17d5d727bab578c1158ab6c1d6875194"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a17d5d727bab578c1158ab6c1d6875194">is_normalized</a> (format Format)</td></tr>
<tr class="memdesc:a17d5d727bab578c1158ab6c1d6875194"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate whether the format is normalized. <br /></td></tr>
<tr class="separator:a17d5d727bab578c1158ab6c1d6875194"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab36efc5fd0dd0d943d9e4e622d91a7ac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab36efc5fd0dd0d943d9e4e622d91a7ac"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#ab36efc5fd0dd0d943d9e4e622d91a7ac">is_packed</a> (format Format)</td></tr>
<tr class="memdesc:ab36efc5fd0dd0d943d9e4e622d91a7ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate whether the format is packed. <br /></td></tr>
<tr class="separator:ab36efc5fd0dd0d943d9e4e622d91a7ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9000c5cfdbcdf0f105a658c4ae691ee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad9000c5cfdbcdf0f105a658c4ae691ee"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#ad9000c5cfdbcdf0f105a658c4ae691ee">is_s3tc_compressed</a> (format Format)</td></tr>
<tr class="memdesc:ad9000c5cfdbcdf0f105a658c4ae691ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate whether a format is compressed with an S3TC algorithm. <br /></td></tr>
<tr class="separator:ad9000c5cfdbcdf0f105a658c4ae691ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abad1d0ceee17fb97917610f2016a0300"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abad1d0ceee17fb97917610f2016a0300"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#abad1d0ceee17fb97917610f2016a0300">is_signed</a> (format Format)</td></tr>
<tr class="memdesc:abad1d0ceee17fb97917610f2016a0300"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate whether a format is signed. <br /></td></tr>
<tr class="separator:abad1d0ceee17fb97917610f2016a0300"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a43c033d310c2021ec452b2759199c81e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a43c033d310c2021ec452b2759199c81e"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a43c033d310c2021ec452b2759199c81e">is_signed_integer</a> (format Format)</td></tr>
<tr class="memdesc:a43c033d310c2021ec452b2759199c81e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate whether the format is a signed integer format. <br /></td></tr>
<tr class="separator:a43c033d310c2021ec452b2759199c81e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada3a293985c1f033695cd6c34740093e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ada3a293985c1f033695cd6c34740093e"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#ada3a293985c1f033695cd6c34740093e">is_snorm</a> (format Format)</td></tr>
<tr class="memdesc:ada3a293985c1f033695cd6c34740093e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate whether the format is a signed normalized format. <br /></td></tr>
<tr class="separator:ada3a293985c1f033695cd6c34740093e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc6f5ed334a41cfaa3733ec6abdb7da3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acc6f5ed334a41cfaa3733ec6abdb7da3"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#acc6f5ed334a41cfaa3733ec6abdb7da3">is_srgb</a> (format Format)</td></tr>
<tr class="memdesc:acc6f5ed334a41cfaa3733ec6abdb7da3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate whether a format stores sRGB color space values. <br /></td></tr>
<tr class="separator:acc6f5ed334a41cfaa3733ec6abdb7da3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9f3096286a51cc3b66dc060c991b4aa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad9f3096286a51cc3b66dc060c991b4aa"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#ad9f3096286a51cc3b66dc060c991b4aa">is_unorm</a> (format Format)</td></tr>
<tr class="memdesc:ad9f3096286a51cc3b66dc060c991b4aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate whether the format is an unsigned normalized format. <br /></td></tr>
<tr class="separator:ad9f3096286a51cc3b66dc060c991b4aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab427a8d56118103dfb7f2357f91f2dc3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab427a8d56118103dfb7f2357f91f2dc3"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#ab427a8d56118103dfb7f2357f91f2dc3">is_unsigned</a> (format Format)</td></tr>
<tr class="memdesc:ab427a8d56118103dfb7f2357f91f2dc3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate whether a format is unsigned. <br /></td></tr>
<tr class="separator:ab427a8d56118103dfb7f2357f91f2dc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4bcc7bc920e3f2719a60f0f868510684"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4bcc7bc920e3f2719a60f0f868510684"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a4bcc7bc920e3f2719a60f0f868510684">is_unsigned_integer</a> (format Format)</td></tr>
<tr class="memdesc:a4bcc7bc920e3f2719a60f0f868510684"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate whether the format is an unsigned integer format. <br /></td></tr>
<tr class="separator:a4bcc7bc920e3f2719a60f0f868510684"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a63eba0158afbac2959449c8a7d9b806d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63eba0158afbac2959449c8a7d9b806d"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a63eba0158afbac2959449c8a7d9b806d">is_valid</a> (format Format)</td></tr>
<tr class="memdesc:a63eba0158afbac2959449c8a7d9b806d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate whether a format value is value or not. <br /></td></tr>
<tr class="separator:a63eba0158afbac2959449c8a7d9b806d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Include to use the format enum and query properties of formats. </p>
<p>Definition in file <a class="el" href="a00033_source.html">format.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,440 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: format.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">format.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="a00033.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00071.html">type.hpp</a>&quot;</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &lt;cstdint&gt;</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;</div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00074.html">gli</a></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;{</div>
<div class="line"><a name="l00012"></a><span class="lineno"><a class="line" href="a00074.html#a387137c43ed9616d39ba90e890d181eb"> 12</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; {</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; FORMAT_UNDEFINED = 0,</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; FORMAT_RG4_UNORM_PACK8, FORMAT_FIRST = FORMAT_RG4_UNORM_PACK8,</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; FORMAT_RGBA4_UNORM_PACK16,</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; FORMAT_BGRA4_UNORM_PACK16,</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; FORMAT_R5G6B5_UNORM_PACK16,</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; FORMAT_B5G6R5_UNORM_PACK16,</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; FORMAT_RGB5A1_UNORM_PACK16,</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; FORMAT_BGR5A1_UNORM_PACK16,</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; FORMAT_A1RGB5_UNORM_PACK16,</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; FORMAT_R8_UNORM_PACK8,</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; FORMAT_R8_SNORM_PACK8,</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; FORMAT_R8_USCALED_PACK8,</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; FORMAT_R8_SSCALED_PACK8,</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; FORMAT_R8_UINT_PACK8,</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; FORMAT_R8_SINT_PACK8,</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; FORMAT_R8_SRGB_PACK8,</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; FORMAT_RG8_UNORM_PACK8,</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; FORMAT_RG8_SNORM_PACK8,</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; FORMAT_RG8_USCALED_PACK8,</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; FORMAT_RG8_SSCALED_PACK8,</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; FORMAT_RG8_UINT_PACK8,</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; FORMAT_RG8_SINT_PACK8,</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; FORMAT_RG8_SRGB_PACK8,</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; FORMAT_RGB8_UNORM_PACK8,</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; FORMAT_RGB8_SNORM_PACK8,</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; FORMAT_RGB8_USCALED_PACK8,</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; FORMAT_RGB8_SSCALED_PACK8,</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; FORMAT_RGB8_UINT_PACK8,</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; FORMAT_RGB8_SINT_PACK8,</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; FORMAT_RGB8_SRGB_PACK8,</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; FORMAT_BGR8_UNORM_PACK8,</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; FORMAT_BGR8_SNORM_PACK8,</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; FORMAT_BGR8_USCALED_PACK8,</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; FORMAT_BGR8_SSCALED_PACK8,</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; FORMAT_BGR8_UINT_PACK8,</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; FORMAT_BGR8_SINT_PACK8,</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; FORMAT_BGR8_SRGB_PACK8,</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; FORMAT_RGBA8_UNORM_PACK8,</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; FORMAT_RGBA8_SNORM_PACK8,</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; FORMAT_RGBA8_USCALED_PACK8,</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; FORMAT_RGBA8_SSCALED_PACK8,</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; FORMAT_RGBA8_UINT_PACK8,</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; FORMAT_RGBA8_SINT_PACK8,</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; FORMAT_RGBA8_SRGB_PACK8,</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; FORMAT_BGRA8_UNORM_PACK8,</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; FORMAT_BGRA8_SNORM_PACK8,</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; FORMAT_BGRA8_USCALED_PACK8,</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; FORMAT_BGRA8_SSCALED_PACK8,</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; FORMAT_BGRA8_UINT_PACK8,</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; FORMAT_BGRA8_SINT_PACK8,</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; FORMAT_BGRA8_SRGB_PACK8,</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; FORMAT_RGBA8_UNORM_PACK32,</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; FORMAT_RGBA8_SNORM_PACK32,</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; FORMAT_RGBA8_USCALED_PACK32,</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; FORMAT_RGBA8_SSCALED_PACK32,</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; FORMAT_RGBA8_UINT_PACK32,</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; FORMAT_RGBA8_SINT_PACK32,</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; FORMAT_RGBA8_SRGB_PACK32,</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; FORMAT_RGB10A2_UNORM_PACK32,</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; FORMAT_RGB10A2_SNORM_PACK32,</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; FORMAT_RGB10A2_USCALED_PACK32,</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; FORMAT_RGB10A2_SSCALED_PACK32,</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; FORMAT_RGB10A2_UINT_PACK32,</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; FORMAT_RGB10A2_SINT_PACK32,</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; FORMAT_BGR10A2_UNORM_PACK32,</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; FORMAT_BGR10A2_SNORM_PACK32,</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; FORMAT_BGR10A2_USCALED_PACK32,</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; FORMAT_BGR10A2_SSCALED_PACK32,</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; FORMAT_BGR10A2_UINT_PACK32,</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; FORMAT_BGR10A2_SINT_PACK32,</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; FORMAT_R16_UNORM_PACK16,</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; FORMAT_R16_SNORM_PACK16,</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; FORMAT_R16_USCALED_PACK16,</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; FORMAT_R16_SSCALED_PACK16,</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; FORMAT_R16_UINT_PACK16,</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; FORMAT_R16_SINT_PACK16,</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; FORMAT_R16_SFLOAT_PACK16,</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; FORMAT_RG16_UNORM_PACK16,</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; FORMAT_RG16_SNORM_PACK16,</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; FORMAT_RG16_USCALED_PACK16,</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; FORMAT_RG16_SSCALED_PACK16,</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; FORMAT_RG16_UINT_PACK16,</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; FORMAT_RG16_SINT_PACK16,</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; FORMAT_RG16_SFLOAT_PACK16,</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; FORMAT_RGB16_UNORM_PACK16,</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; FORMAT_RGB16_SNORM_PACK16,</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; FORMAT_RGB16_USCALED_PACK16,</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; FORMAT_RGB16_SSCALED_PACK16,</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; FORMAT_RGB16_UINT_PACK16,</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; FORMAT_RGB16_SINT_PACK16,</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; FORMAT_RGB16_SFLOAT_PACK16,</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; FORMAT_RGBA16_UNORM_PACK16,</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; FORMAT_RGBA16_SNORM_PACK16,</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; FORMAT_RGBA16_USCALED_PACK16,</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; FORMAT_RGBA16_SSCALED_PACK16,</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; FORMAT_RGBA16_UINT_PACK16,</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; FORMAT_RGBA16_SINT_PACK16,</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; FORMAT_RGBA16_SFLOAT_PACK16,</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; FORMAT_R32_UINT_PACK32,</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; FORMAT_R32_SINT_PACK32,</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; FORMAT_R32_SFLOAT_PACK32,</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; FORMAT_RG32_UINT_PACK32,</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; FORMAT_RG32_SINT_PACK32,</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; FORMAT_RG32_SFLOAT_PACK32,</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; FORMAT_RGB32_UINT_PACK32,</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; FORMAT_RGB32_SINT_PACK32,</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; FORMAT_RGB32_SFLOAT_PACK32,</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; FORMAT_RGBA32_UINT_PACK32,</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; FORMAT_RGBA32_SINT_PACK32,</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; FORMAT_RGBA32_SFLOAT_PACK32,</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; FORMAT_R64_UINT_PACK64,</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; FORMAT_R64_SINT_PACK64,</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; FORMAT_R64_SFLOAT_PACK64,</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; FORMAT_RG64_UINT_PACK64,</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; FORMAT_RG64_SINT_PACK64,</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; FORMAT_RG64_SFLOAT_PACK64,</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; FORMAT_RGB64_UINT_PACK64,</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; FORMAT_RGB64_SINT_PACK64,</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; FORMAT_RGB64_SFLOAT_PACK64,</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; FORMAT_RGBA64_UINT_PACK64,</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; FORMAT_RGBA64_SINT_PACK64,</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; FORMAT_RGBA64_SFLOAT_PACK64,</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; FORMAT_RG11B10_UFLOAT_PACK32,</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; FORMAT_RGB9E5_UFLOAT_PACK32,</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; FORMAT_D16_UNORM_PACK16,</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; FORMAT_D24_UNORM_PACK32,</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; FORMAT_D32_SFLOAT_PACK32,</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; FORMAT_S8_UINT_PACK8,</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; FORMAT_D16_UNORM_S8_UINT_PACK32,</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; FORMAT_D24_UNORM_S8_UINT_PACK32,</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; FORMAT_D32_SFLOAT_S8_UINT_PACK64,</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; FORMAT_RGB_DXT1_UNORM_BLOCK8,</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; FORMAT_RGB_DXT1_SRGB_BLOCK8,</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; FORMAT_RGBA_DXT1_UNORM_BLOCK8,</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; FORMAT_RGBA_DXT1_SRGB_BLOCK8,</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; FORMAT_RGBA_DXT3_UNORM_BLOCK16,</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; FORMAT_RGBA_DXT3_SRGB_BLOCK16,</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; FORMAT_RGBA_DXT5_UNORM_BLOCK16,</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; FORMAT_RGBA_DXT5_SRGB_BLOCK16,</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; FORMAT_R_ATI1N_UNORM_BLOCK8,</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; FORMAT_R_ATI1N_SNORM_BLOCK8,</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; FORMAT_RG_ATI2N_UNORM_BLOCK16,</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; FORMAT_RG_ATI2N_SNORM_BLOCK16,</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; FORMAT_RGB_BP_UFLOAT_BLOCK16,</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; FORMAT_RGB_BP_SFLOAT_BLOCK16,</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; FORMAT_RGBA_BP_UNORM_BLOCK16,</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; FORMAT_RGBA_BP_SRGB_BLOCK16,</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; FORMAT_RGB_ETC2_UNORM_BLOCK8,</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; FORMAT_RGB_ETC2_SRGB_BLOCK8,</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; FORMAT_RGBA_ETC2_UNORM_BLOCK8,</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; FORMAT_RGBA_ETC2_SRGB_BLOCK8,</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; FORMAT_RGBA_ETC2_UNORM_BLOCK16,</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; FORMAT_RGBA_ETC2_SRGB_BLOCK16,</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; FORMAT_R_EAC_UNORM_BLOCK8,</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; FORMAT_R_EAC_SNORM_BLOCK8,</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; FORMAT_RG_EAC_UNORM_BLOCK16,</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; FORMAT_RG_EAC_SNORM_BLOCK16,</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; FORMAT_RGBA_ASTC_4X4_UNORM_BLOCK16,</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; FORMAT_RGBA_ASTC_4X4_SRGB_BLOCK16,</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; FORMAT_RGBA_ASTC_5X4_UNORM_BLOCK16,</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; FORMAT_RGBA_ASTC_5X4_SRGB_BLOCK16,</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; FORMAT_RGBA_ASTC_5X5_UNORM_BLOCK16,</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; FORMAT_RGBA_ASTC_5X5_SRGB_BLOCK16,</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; FORMAT_RGBA_ASTC_6X5_UNORM_BLOCK16,</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; FORMAT_RGBA_ASTC_6X5_SRGB_BLOCK16,</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; FORMAT_RGBA_ASTC_6X6_UNORM_BLOCK16,</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; FORMAT_RGBA_ASTC_6X6_SRGB_BLOCK16,</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; FORMAT_RGBA_ASTC_8X5_UNORM_BLOCK16,</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; FORMAT_RGBA_ASTC_8X5_SRGB_BLOCK16,</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; FORMAT_RGBA_ASTC_8X6_UNORM_BLOCK16,</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; FORMAT_RGBA_ASTC_8X6_SRGB_BLOCK16,</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; FORMAT_RGBA_ASTC_8X8_UNORM_BLOCK16,</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; FORMAT_RGBA_ASTC_8X8_SRGB_BLOCK16,</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; FORMAT_RGBA_ASTC_10X5_UNORM_BLOCK16,</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; FORMAT_RGBA_ASTC_10X5_SRGB_BLOCK16,</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; FORMAT_RGBA_ASTC_10X6_UNORM_BLOCK16,</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; FORMAT_RGBA_ASTC_10X6_SRGB_BLOCK16,</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; FORMAT_RGBA_ASTC_10X8_UNORM_BLOCK16,</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; FORMAT_RGBA_ASTC_10X8_SRGB_BLOCK16,</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; FORMAT_RGBA_ASTC_10X10_UNORM_BLOCK16,</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; FORMAT_RGBA_ASTC_10X10_SRGB_BLOCK16,</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; FORMAT_RGBA_ASTC_12X10_UNORM_BLOCK16,</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; FORMAT_RGBA_ASTC_12X10_SRGB_BLOCK16,</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; FORMAT_RGBA_ASTC_12X12_UNORM_BLOCK16,</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; FORMAT_RGBA_ASTC_12X12_SRGB_BLOCK16,</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; FORMAT_RGB_PVRTC1_8X8_UNORM_BLOCK32,</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; FORMAT_RGB_PVRTC1_8X8_SRGB_BLOCK32,</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; FORMAT_RGB_PVRTC1_16X8_UNORM_BLOCK32,</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; FORMAT_RGB_PVRTC1_16X8_SRGB_BLOCK32,</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; FORMAT_RGBA_PVRTC1_8X8_UNORM_BLOCK32,</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; FORMAT_RGBA_PVRTC1_8X8_SRGB_BLOCK32,</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; FORMAT_RGBA_PVRTC1_16X8_UNORM_BLOCK32,</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; FORMAT_RGBA_PVRTC1_16X8_SRGB_BLOCK32,</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; FORMAT_RGBA_PVRTC2_4X4_UNORM_BLOCK8,</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; FORMAT_RGBA_PVRTC2_4X4_SRGB_BLOCK8,</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; FORMAT_RGBA_PVRTC2_8X4_UNORM_BLOCK8,</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; FORMAT_RGBA_PVRTC2_8X4_SRGB_BLOCK8,</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; FORMAT_RGB_ETC_UNORM_BLOCK8,</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; FORMAT_RGB_ATC_UNORM_BLOCK8,</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; FORMAT_RGBA_ATCA_UNORM_BLOCK16,</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; FORMAT_RGBA_ATCI_UNORM_BLOCK16,</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; FORMAT_L8_UNORM_PACK8,</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; FORMAT_A8_UNORM_PACK8,</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; FORMAT_LA8_UNORM_PACK8,</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; FORMAT_L16_UNORM_PACK16,</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; FORMAT_A16_UNORM_PACK16,</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; FORMAT_LA16_UNORM_PACK16,</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; FORMAT_BGR8_UNORM_PACK32,</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; FORMAT_BGR8_SRGB_PACK32,</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; FORMAT_RG3B2_UNORM_PACK8, FORMAT_LAST = FORMAT_RG3B2_UNORM_PACK8</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; };</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div>
<div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="a00074.html#a43317d2a6e2101377c67b8831ef2fd4c"> 259</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="a00074.html#a43317d2a6e2101377c67b8831ef2fd4c">swizzle</a></div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; {</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; SWIZZLE_RED, SWIZZLE_FIRST = SWIZZLE_RED, SWIZZLE_CHANNEL_FIRST = SWIZZLE_RED,</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; SWIZZLE_GREEN,</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; SWIZZLE_BLUE,</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; SWIZZLE_ALPHA, SWIZZLE_CHANNEL_LAST = SWIZZLE_ALPHA,</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; SWIZZLE_ZERO,</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; SWIZZLE_ONE, SWIZZLE_LAST = SWIZZLE_ONE</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; };</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;</div>
<div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="a00074.html#abf97bb3a068c322d88797b0e18209e16"> 270</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="a00074.html#abf97bb3a068c322d88797b0e18209e16">is_channel</a>(<a class="code" href="a00074.html#a43317d2a6e2101377c67b8831ef2fd4c">swizzle</a> Swizzle)</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; {</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">return</span> Swizzle &gt;= SWIZZLE_CHANNEL_FIRST &amp;&amp; Swizzle &lt;= SWIZZLE_CHANNEL_LAST;</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; }</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keyword">enum</span></div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; {</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; FORMAT_INVALID = -1,</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; FORMAT_COUNT = FORMAT_LAST - FORMAT_FIRST + 1,</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; SWIZZLE_COUNT = SWIZZLE_LAST - SWIZZLE_FIRST + 1</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; };</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div>
<div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="a00074.html#a63eba0158afbac2959449c8a7d9b806d"> 283</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="a00074.html#a63eba0158afbac2959449c8a7d9b806d">is_valid</a>(<a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a> Format)</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; {</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">return</span> Format &gt;= FORMAT_FIRST &amp;&amp; Format &lt;= FORMAT_LAST;</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; }</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keyword">typedef</span> glm::tvec4&lt;swizzle&gt; swizzles;</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="a00074.html#a0034114c47df4c39d48ba964ab823f98">is_compressed</a>(<a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a> Format);</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="a00074.html#ad9000c5cfdbcdf0f105a658c4ae691ee">is_s3tc_compressed</a>(<a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a> Format);</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="a00074.html#acc6f5ed334a41cfaa3733ec6abdb7da3">is_srgb</a>(<a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a> Format);</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="a00074.html#ae8ca05b97f1deac7bf5a50468868a449">block_size</a>(<a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a> Format);</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; ivec3 <a class="code" href="a00074.html#a8ed69f83293f50cafb2d147d609e2a96">block_extent</a>(<a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a> Format);</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="a00074.html#a55700a60464d27ea9d2f03d80c8b76d8">component_count</a>(<a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a> Format);</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="a00074.html#ab427a8d56118103dfb7f2357f91f2dc3">is_unsigned</a>(<a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a> Format);</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="a00074.html#abad1d0ceee17fb97917610f2016a0300">is_signed</a>(<a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a> Format);</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="a00074.html#a760a9e4d384a6573979a9c6ffb6c68c1">is_integer</a>(<a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a> Format);</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="a00074.html#a43c033d310c2021ec452b2759199c81e">is_signed_integer</a>(<a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a> Format);</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="a00074.html#a4bcc7bc920e3f2719a60f0f868510684">is_unsigned_integer</a>(<a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a> Format);</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="a00074.html#a33f4f2b1c711dc0dec52b78ea0a8b2e1">is_float</a>(<a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a> Format);</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="a00074.html#a17d5d727bab578c1158ab6c1d6875194">is_normalized</a>(<a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a> Format);</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="a00074.html#ad9f3096286a51cc3b66dc060c991b4aa">is_unorm</a>(<a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a> Format);</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="a00074.html#ada3a293985c1f033695cd6c34740093e">is_snorm</a>(<a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a> Format);</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="a00074.html#ab36efc5fd0dd0d943d9e4e622d91a7ac">is_packed</a>(<a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a> Format);</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;}<span class="comment">//namespace gli</span></div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="preprocessor">#include &quot;./core/format.inl&quot;</span></div>
<div class="ttc" id="a00074_html_a8ed69f83293f50cafb2d147d609e2a96"><div class="ttname"><a href="a00074.html#a8ed69f83293f50cafb2d147d609e2a96">gli::block_extent</a></div><div class="ttdeci">ivec3 block_extent(format Format)</div><div class="ttdoc">Return the dimensions in texels of the block for a format. </div></div>
<div class="ttc" id="a00074_html_a33f4f2b1c711dc0dec52b78ea0a8b2e1"><div class="ttname"><a href="a00074.html#a33f4f2b1c711dc0dec52b78ea0a8b2e1">gli::is_float</a></div><div class="ttdeci">bool is_float(format Format)</div><div class="ttdoc">Evaluate whether the format is an float format. </div></div>
<div class="ttc" id="a00074_html_a387137c43ed9616d39ba90e890d181eb"><div class="ttname"><a href="a00074.html#a387137c43ed9616d39ba90e890d181eb">gli::format</a></div><div class="ttdeci">format</div><div class="ttdoc">Texture data format. </div><div class="ttdef"><b>Definition:</b> <a href="a00033_source.html#l00012">format.hpp:12</a></div></div>
<div class="ttc" id="a00074_html_a63eba0158afbac2959449c8a7d9b806d"><div class="ttname"><a href="a00074.html#a63eba0158afbac2959449c8a7d9b806d">gli::is_valid</a></div><div class="ttdeci">bool is_valid(format Format)</div><div class="ttdoc">Evaluate whether a format value is value or not. </div><div class="ttdef"><b>Definition:</b> <a href="a00033_source.html#l00283">format.hpp:283</a></div></div>
<div class="ttc" id="a00074_html_a55700a60464d27ea9d2f03d80c8b76d8"><div class="ttname"><a href="a00074.html#a55700a60464d27ea9d2f03d80c8b76d8">gli::component_count</a></div><div class="ttdeci">size_t component_count(format Format)</div><div class="ttdoc">Return the number of components of a format. </div></div>
<div class="ttc" id="a00074_html_acc6f5ed334a41cfaa3733ec6abdb7da3"><div class="ttname"><a href="a00074.html#acc6f5ed334a41cfaa3733ec6abdb7da3">gli::is_srgb</a></div><div class="ttdeci">bool is_srgb(format Format)</div><div class="ttdoc">Evaluate whether a format stores sRGB color space values. </div></div>
<div class="ttc" id="a00074_html_ab36efc5fd0dd0d943d9e4e622d91a7ac"><div class="ttname"><a href="a00074.html#ab36efc5fd0dd0d943d9e4e622d91a7ac">gli::is_packed</a></div><div class="ttdeci">bool is_packed(format Format)</div><div class="ttdoc">Evaluate whether the format is packed. </div></div>
<div class="ttc" id="a00074_html_abf97bb3a068c322d88797b0e18209e16"><div class="ttname"><a href="a00074.html#abf97bb3a068c322d88797b0e18209e16">gli::is_channel</a></div><div class="ttdeci">bool is_channel(swizzle Swizzle)</div><div class="ttdoc">Determine whether the Swizzle value represent a channel. </div><div class="ttdef"><b>Definition:</b> <a href="a00033_source.html#l00270">format.hpp:270</a></div></div>
<div class="ttc" id="a00074_html_a760a9e4d384a6573979a9c6ffb6c68c1"><div class="ttname"><a href="a00074.html#a760a9e4d384a6573979a9c6ffb6c68c1">gli::is_integer</a></div><div class="ttdeci">bool is_integer(format Format)</div><div class="ttdoc">Evaluate whether the format is an integer format. </div></div>
<div class="ttc" id="a00074_html_a4bcc7bc920e3f2719a60f0f868510684"><div class="ttname"><a href="a00074.html#a4bcc7bc920e3f2719a60f0f868510684">gli::is_unsigned_integer</a></div><div class="ttdeci">bool is_unsigned_integer(format Format)</div><div class="ttdoc">Evaluate whether the format is an unsigned integer format. </div></div>
<div class="ttc" id="a00074_html_ad9f3096286a51cc3b66dc060c991b4aa"><div class="ttname"><a href="a00074.html#ad9f3096286a51cc3b66dc060c991b4aa">gli::is_unorm</a></div><div class="ttdeci">bool is_unorm(format Format)</div><div class="ttdoc">Evaluate whether the format is an unsigned normalized format. </div></div>
<div class="ttc" id="a00074_html_a0034114c47df4c39d48ba964ab823f98"><div class="ttname"><a href="a00074.html#a0034114c47df4c39d48ba964ab823f98">gli::is_compressed</a></div><div class="ttdeci">bool is_compressed(format Format)</div><div class="ttdoc">Evaluate whether a format is compressed. </div></div>
<div class="ttc" id="a00074_html_a43c033d310c2021ec452b2759199c81e"><div class="ttname"><a href="a00074.html#a43c033d310c2021ec452b2759199c81e">gli::is_signed_integer</a></div><div class="ttdeci">bool is_signed_integer(format Format)</div><div class="ttdoc">Evaluate whether the format is a signed integer format. </div></div>
<div class="ttc" id="a00074_html_ada3a293985c1f033695cd6c34740093e"><div class="ttname"><a href="a00074.html#ada3a293985c1f033695cd6c34740093e">gli::is_snorm</a></div><div class="ttdeci">bool is_snorm(format Format)</div><div class="ttdoc">Evaluate whether the format is a signed normalized format. </div></div>
<div class="ttc" id="a00074_html_a17d5d727bab578c1158ab6c1d6875194"><div class="ttname"><a href="a00074.html#a17d5d727bab578c1158ab6c1d6875194">gli::is_normalized</a></div><div class="ttdeci">bool is_normalized(format Format)</div><div class="ttdoc">Evaluate whether the format is normalized. </div></div>
<div class="ttc" id="a00074_html_abad1d0ceee17fb97917610f2016a0300"><div class="ttname"><a href="a00074.html#abad1d0ceee17fb97917610f2016a0300">gli::is_signed</a></div><div class="ttdeci">bool is_signed(format Format)</div><div class="ttdoc">Evaluate whether a format is signed. </div></div>
<div class="ttc" id="a00074_html"><div class="ttname"><a href="a00074.html">gli</a></div><div class="ttdoc">Namespace where all the classes and functions provided by GLI are exposed. </div><div class="ttdef"><b>Definition:</b> <a href="a00020_source.html#l00006">clear.hpp:6</a></div></div>
<div class="ttc" id="a00074_html_a43317d2a6e2101377c67b8831ef2fd4c"><div class="ttname"><a href="a00074.html#a43317d2a6e2101377c67b8831ef2fd4c">gli::swizzle</a></div><div class="ttdeci">swizzle</div><div class="ttdoc">Represent the source of a channel. </div><div class="ttdef"><b>Definition:</b> <a href="a00033_source.html#l00259">format.hpp:259</a></div></div>
<div class="ttc" id="a00074_html_ad9000c5cfdbcdf0f105a658c4ae691ee"><div class="ttname"><a href="a00074.html#ad9000c5cfdbcdf0f105a658c4ae691ee">gli::is_s3tc_compressed</a></div><div class="ttdeci">bool is_s3tc_compressed(format Format)</div><div class="ttdoc">Evaluate whether a format is compressed with an S3TC algorithm. </div></div>
<div class="ttc" id="a00074_html_ab427a8d56118103dfb7f2357f91f2dc3"><div class="ttname"><a href="a00074.html#ab427a8d56118103dfb7f2357f91f2dc3">gli::is_unsigned</a></div><div class="ttdeci">bool is_unsigned(format Format)</div><div class="ttdoc">Evaluate whether a format is unsigned. </div></div>
<div class="ttc" id="a00074_html_ae8ca05b97f1deac7bf5a50468868a449"><div class="ttname"><a href="a00074.html#ae8ca05b97f1deac7bf5a50468868a449">gli::block_size</a></div><div class="ttdeci">size_t block_size(format Format)</div><div class="ttdoc">Return the size in bytes of a block for a format. </div></div>
<div class="ttc" id="a00071_html"><div class="ttname"><a href="a00071.html">type.hpp</a></div><div class="ttdoc">Include to use basic GLI types. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,155 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: generate_mipmaps.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">generate_mipmaps.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Include to generate mipmaps of textures.
<a href="#details">More...</a></p>
<p><a href="a00034_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:a00074"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html">gli</a></td></tr>
<tr class="memdesc:a00074"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace where all the classes and functions provided by GLI are exposed. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:aebc770740435e7a599c0da7f70ae8bba"><td class="memTemplParams" colspan="2"><a class="anchor" id="aebc770740435e7a599c0da7f70ae8bba"></a>
template&lt;typename texture_type &gt; </td></tr>
<tr class="memitem:aebc770740435e7a599c0da7f70ae8bba"><td class="memTemplItemLeft" align="right" valign="top">texture_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00074.html#aebc770740435e7a599c0da7f70ae8bba">generate_mipmaps</a> (texture_type const &amp;Texture, filter Minification)</td></tr>
<tr class="memdesc:aebc770740435e7a599c0da7f70ae8bba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a texture and generate all the mipmaps of the texture using the Minification filter. <br /></td></tr>
<tr class="separator:aebc770740435e7a599c0da7f70ae8bba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a49a8d8e4ceed6a19f833bb4a91fd5b99"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49a8d8e4ceed6a19f833bb4a91fd5b99"></a>
texture1d&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a49a8d8e4ceed6a19f833bb4a91fd5b99">generate_mipmaps</a> (texture1d const &amp;Texture, texture1d::size_type BaseLevel, texture1d::size_type MaxLevel, filter Minification)</td></tr>
<tr class="memdesc:a49a8d8e4ceed6a19f833bb4a91fd5b99"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a texture and generate the mipmaps of the texture from the BaseLevel to the MaxLevel included using the Minification filter. <br /></td></tr>
<tr class="separator:a49a8d8e4ceed6a19f833bb4a91fd5b99"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a79cb90926a67b19285a4cd2ca3346bd1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a79cb90926a67b19285a4cd2ca3346bd1"></a>
texture1d_array&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a79cb90926a67b19285a4cd2ca3346bd1">generate_mipmaps</a> (texture1d_array const &amp;Texture, texture1d_array::size_type BaseLayer, texture1d_array::size_type MaxLayer, texture1d_array::size_type BaseLevel, texture1d_array::size_type MaxLevel, filter Minification)</td></tr>
<tr class="memdesc:a79cb90926a67b19285a4cd2ca3346bd1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a texture and generate the mipmaps of the texture from the BaseLayer to the MaxLayer and from the BaseLevel to the MaxLevel included levels using the Minification filter. <br /></td></tr>
<tr class="separator:a79cb90926a67b19285a4cd2ca3346bd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33941ff1e8aa1285fed306dab11f3d81"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a33941ff1e8aa1285fed306dab11f3d81"></a>
texture2d&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a33941ff1e8aa1285fed306dab11f3d81">generate_mipmaps</a> (texture2d const &amp;Texture, texture2d::size_type BaseLevel, texture2d::size_type MaxLevel, filter Minification)</td></tr>
<tr class="memdesc:a33941ff1e8aa1285fed306dab11f3d81"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a texture and generate the mipmaps of the texture from the BaseLevel to the MaxLevel included using the Minification filter. <br /></td></tr>
<tr class="separator:a33941ff1e8aa1285fed306dab11f3d81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5c9024b6fe6c29a6e070c2f5b6c359c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5c9024b6fe6c29a6e070c2f5b6c359c"></a>
texture2d_array&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#ad5c9024b6fe6c29a6e070c2f5b6c359c">generate_mipmaps</a> (texture2d_array const &amp;Texture, texture2d_array::size_type BaseLayer, texture2d_array::size_type MaxLayer, texture2d_array::size_type BaseLevel, texture2d_array::size_type MaxLevel, filter Minification)</td></tr>
<tr class="memdesc:ad5c9024b6fe6c29a6e070c2f5b6c359c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a texture and generate the mipmaps of the texture from the BaseLayer to the MaxLayer and from the BaseLevel to the MaxLevel included levels using the Minification filter. <br /></td></tr>
<tr class="separator:ad5c9024b6fe6c29a6e070c2f5b6c359c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1827d0afc5f44c0702b7dad13ebfc07e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1827d0afc5f44c0702b7dad13ebfc07e"></a>
texture3d&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a1827d0afc5f44c0702b7dad13ebfc07e">generate_mipmaps</a> (texture3d const &amp;Texture, texture3d::size_type BaseLevel, texture3d::size_type MaxLevel, filter Minification)</td></tr>
<tr class="memdesc:a1827d0afc5f44c0702b7dad13ebfc07e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a texture and generate the mipmaps of the texture from the BaseLevel to the MaxLevel included using the Minification filter. <br /></td></tr>
<tr class="separator:a1827d0afc5f44c0702b7dad13ebfc07e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c8d037e71012ba2d83aff4cb66993cb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1c8d037e71012ba2d83aff4cb66993cb"></a>
texture_cube&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a1c8d037e71012ba2d83aff4cb66993cb">generate_mipmaps</a> (texture_cube const &amp;Texture, texture_cube::size_type BaseFace, texture_cube::size_type MaxFace, texture_cube::size_type BaseLevel, texture_cube::size_type MaxLevel, filter Minification)</td></tr>
<tr class="memdesc:a1c8d037e71012ba2d83aff4cb66993cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a texture and generate the mipmaps of the texture from the BaseLayer to the MaxLayer, from the BaseFace to the MaxFace and from the BaseLevel to the MaxLevel included levels using the Minification filter. <br /></td></tr>
<tr class="separator:a1c8d037e71012ba2d83aff4cb66993cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adbf06f6f155382d3a99a95af753aad42"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adbf06f6f155382d3a99a95af753aad42"></a>
texture_cube_array&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#adbf06f6f155382d3a99a95af753aad42">generate_mipmaps</a> (texture_cube_array const &amp;Texture, texture_cube_array::size_type BaseLayer, texture_cube_array::size_type MaxLayer, texture_cube_array::size_type BaseFace, texture_cube_array::size_type MaxFace, texture_cube_array::size_type BaseLevel, texture_cube_array::size_type MaxLevel, filter Minification)</td></tr>
<tr class="memdesc:adbf06f6f155382d3a99a95af753aad42"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a texture and generate the mipmaps of the texture from the BaseLayer to the MaxLayer and from the BaseLevel to the MaxLevel included levels using the Minification filter. <br /></td></tr>
<tr class="separator:adbf06f6f155382d3a99a95af753aad42"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Include to generate mipmaps of textures. </p>
<p>Definition in file <a class="el" href="a00034_source.html">generate_mipmaps.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,170 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: generate_mipmaps.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">generate_mipmaps.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="a00034.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00063.html">texture1d.hpp</a>&quot;</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00064.html">texture1d_array.hpp</a>&quot;</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00065.html">texture2d.hpp</a>&quot;</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00066.html">texture2d_array.hpp</a>&quot;</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00067.html">texture3d.hpp</a>&quot;</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00068.html">texture_cube.hpp</a>&quot;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00069.html">texture_cube_array.hpp</a>&quot;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00047.html">sampler.hpp</a>&quot;</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00074.html">gli</a></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;{</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> texture_type&gt;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; texture_type <a class="code" href="a00074.html#aebc770740435e7a599c0da7f70ae8bba">generate_mipmaps</a>(texture_type <span class="keyword">const</span>&amp; Texture, <a class="code" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">filter</a> Minification);</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; texture1d <a class="code" href="a00074.html#aebc770740435e7a599c0da7f70ae8bba">generate_mipmaps</a>(</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; texture1d <span class="keyword">const</span>&amp; Texture,</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; texture1d::size_type BaseLevel, texture1d::size_type MaxLevel,</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">filter</a> Minification);</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; texture1d_array <a class="code" href="a00074.html#aebc770740435e7a599c0da7f70ae8bba">generate_mipmaps</a>(</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; texture1d_array <span class="keyword">const</span>&amp; Texture,</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; texture1d_array::size_type BaseLayer, texture1d_array::size_type MaxLayer,</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; texture1d_array::size_type BaseLevel, texture1d_array::size_type MaxLevel,</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">filter</a> Minification);</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; texture2d <a class="code" href="a00074.html#aebc770740435e7a599c0da7f70ae8bba">generate_mipmaps</a>(</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; texture2d <span class="keyword">const</span>&amp; Texture,</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; texture2d::size_type BaseLevel, texture2d::size_type MaxLevel,</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">filter</a> Minification);</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; texture2d_array <a class="code" href="a00074.html#aebc770740435e7a599c0da7f70ae8bba">generate_mipmaps</a>(</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; texture2d_array <span class="keyword">const</span>&amp; Texture,</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; texture2d_array::size_type BaseLayer, texture2d_array::size_type MaxLayer,</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; texture2d_array::size_type BaseLevel, texture2d_array::size_type MaxLevel,</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">filter</a> Minification);</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; texture3d <a class="code" href="a00074.html#aebc770740435e7a599c0da7f70ae8bba">generate_mipmaps</a>(</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; texture3d <span class="keyword">const</span>&amp; Texture,</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; texture3d::size_type BaseLevel, texture3d::size_type MaxLevel,</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">filter</a> Minification);</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; texture_cube <a class="code" href="a00074.html#aebc770740435e7a599c0da7f70ae8bba">generate_mipmaps</a>(</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; texture_cube <span class="keyword">const</span>&amp; Texture,</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; texture_cube::size_type BaseFace, texture_cube::size_type MaxFace,</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; texture_cube::size_type BaseLevel, texture_cube::size_type MaxLevel,</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">filter</a> Minification);</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; texture_cube_array <a class="code" href="a00074.html#aebc770740435e7a599c0da7f70ae8bba">generate_mipmaps</a>(</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; texture_cube_array <span class="keyword">const</span>&amp; Texture,</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; texture_cube_array::size_type BaseLayer, texture_cube_array::size_type MaxLayer,</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; texture_cube_array::size_type BaseFace, texture_cube_array::size_type MaxFace,</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; texture_cube_array::size_type BaseLevel, texture_cube_array::size_type MaxLevel,</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">filter</a> Minification);</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;}<span class="comment">//namespace gli</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor">#include &quot;./core/generate_mipmaps.inl&quot;</span></div>
<div class="ttc" id="a00068_html"><div class="ttname"><a href="a00068.html">texture_cube.hpp</a></div><div class="ttdoc">Include to use cube map textures. </div></div>
<div class="ttc" id="a00074_html_aebc770740435e7a599c0da7f70ae8bba"><div class="ttname"><a href="a00074.html#aebc770740435e7a599c0da7f70ae8bba">gli::generate_mipmaps</a></div><div class="ttdeci">texture_type generate_mipmaps(texture_type const &amp;Texture, filter Minification)</div><div class="ttdoc">Allocate a texture and generate all the mipmaps of the texture using the Minification filter...</div></div>
<div class="ttc" id="a00047_html"><div class="ttname"><a href="a00047.html">sampler.hpp</a></div><div class="ttdoc">Include to use wrap modes and the sampler base class. </div></div>
<div class="ttc" id="a00064_html"><div class="ttname"><a href="a00064.html">texture1d_array.hpp</a></div><div class="ttdoc">Include to use 1d array textures. </div></div>
<div class="ttc" id="a00067_html"><div class="ttname"><a href="a00067.html">texture3d.hpp</a></div><div class="ttdoc">Include to use 3d textures. </div></div>
<div class="ttc" id="a00063_html"><div class="ttname"><a href="a00063.html">texture1d.hpp</a></div><div class="ttdoc">Include to use 1d textures. </div></div>
<div class="ttc" id="a00074_html_a610876e02cee64e29fe4376ffeb6b9b9"><div class="ttname"><a href="a00074.html#a610876e02cee64e29fe4376ffeb6b9b9">gli::filter</a></div><div class="ttdeci">filter</div><div class="ttdoc">Texture filtring modes. </div><div class="ttdef"><b>Definition:</b> <a href="a00030_source.html#l00009">filter.hpp:9</a></div></div>
<div class="ttc" id="a00066_html"><div class="ttname"><a href="a00066.html">texture2d_array.hpp</a></div><div class="ttdoc">Include to use 2d array textures. </div></div>
<div class="ttc" id="a00069_html"><div class="ttname"><a href="a00069.html">texture_cube_array.hpp</a></div><div class="ttdoc">Include to use cube map array textures. </div></div>
<div class="ttc" id="a00074_html"><div class="ttname"><a href="a00074.html">gli</a></div><div class="ttdoc">Namespace where all the classes and functions provided by GLI are exposed. </div><div class="ttdef"><b>Definition:</b> <a href="a00020_source.html#l00006">clear.hpp:6</a></div></div>
<div class="ttc" id="a00065_html"><div class="ttname"><a href="a00065.html">texture2d.hpp</a></div><div class="ttdoc">Include to use 2d textures. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,125 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: gl.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">gl.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Include to translate GLI enums to OpenGL enums.
<a href="#details">More...</a></p>
<p><a href="a00035_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00002.html">gl</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Translation class to convert GLI enums into OpenGL values. <a href="a00002.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:a00074"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html">gli</a></td></tr>
<tr class="memdesc:a00074"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace where all the classes and functions provided by GLI are exposed. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Include to translate GLI enums to OpenGL enums. </p>
<p>Definition in file <a class="el" href="a00035_source.html">gl.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,475 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: gl.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">gl.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="a00035.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00033.html">format.hpp</a>&quot;</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00061.html">target.hpp</a>&quot;</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#include &lt;array&gt;</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00074.html">gli</a></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;{</div>
<div class="line"><a name="l00013"></a><span class="lineno"><a class="line" href="a00002.html"> 13</a></span>&#160; <span class="keyword">class </span><a class="code" href="a00002.html">gl</a></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; {</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keyword">enum</span> internal_format</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; {</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; INTERNAL_RGB_UNORM= 0x1907, <span class="comment">//GL_RGB</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; INTERNAL_BGR_UNORM = 0x80E0, <span class="comment">//GL_BGR</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; INTERNAL_RGBA_UNORM = 0x1908, <span class="comment">//GL_RGBA</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; INTERNAL_BGRA_UNORM = 0x80E1, <span class="comment">//GL_BGRA</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; INTERNAL_BGRA8_UNORM = 0x93A1, <span class="comment">//GL_BGRA8_EXT</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="comment">// unorm formats</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; INTERNAL_R8_UNORM = 0x8229, <span class="comment">//GL_R8</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; INTERNAL_RG8_UNORM = 0x822B, <span class="comment">//GL_RG8</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; INTERNAL_RGB8_UNORM = 0x8051, <span class="comment">//GL_RGB8</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; INTERNAL_RGBA8_UNORM = 0x8058, <span class="comment">//GL_RGBA8</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; INTERNAL_R16_UNORM = 0x822A, <span class="comment">//GL_R16</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; INTERNAL_RG16_UNORM = 0x822C, <span class="comment">//GL_RG16</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; INTERNAL_RGB16_UNORM = 0x8054, <span class="comment">//GL_RGB16</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; INTERNAL_RGBA16_UNORM = 0x805B, <span class="comment">//GL_RGBA16</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; INTERNAL_RGB10A2_UNORM = 0x8059, <span class="comment">//GL_RGB10_A2</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; INTERNAL_RGB10A2_SNORM_EXT = 0xFFFC,</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="comment">// snorm formats</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; INTERNAL_R8_SNORM = 0x8F94, <span class="comment">//GL_R8_SNORM</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; INTERNAL_RG8_SNORM = 0x8F95, <span class="comment">//GL_RG8_SNORM</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; INTERNAL_RGB8_SNORM = 0x8F96, <span class="comment">//GL_RGB8_SNORM</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; INTERNAL_RGBA8_SNORM = 0x8F97, <span class="comment">//GL_RGBA8_SNORM</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; INTERNAL_R16_SNORM = 0x8F98, <span class="comment">//GL_R16_SNORM</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; INTERNAL_RG16_SNORM= 0x8F99, <span class="comment">//GL_RG16_SNORM</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; INTERNAL_RGB16_SNORM= 0x8F9A, <span class="comment">//GL_RGB16_SNORM</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; INTERNAL_RGBA16_SNORM = 0x8F9B, <span class="comment">//GL_RGBA16_SNORM</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="comment">// unsigned integer formats</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; INTERNAL_R8U = 0x8232, <span class="comment">//GL_R8UI</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; INTERNAL_RG8U = 0x8238, <span class="comment">//GL_RG8UI</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; INTERNAL_RGB8U = 0x8D7D, <span class="comment">//GL_RGB8UI</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; INTERNAL_RGBA8U = 0x8D7C, <span class="comment">//GL_RGBA8UI</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; INTERNAL_R16U = 0x8234, <span class="comment">//GL_R16UI</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; INTERNAL_RG16U = 0x823A, <span class="comment">//GL_RG16UI</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; INTERNAL_RGB16U = 0x8D77, <span class="comment">//GL_RGB16UI</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; INTERNAL_RGBA16U = 0x8D76, <span class="comment">//GL_RGBA16UI</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; INTERNAL_R32U = 0x8236, <span class="comment">//GL_R32UI</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; INTERNAL_RG32U = 0x823C, <span class="comment">//GL_RG32UI</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; INTERNAL_RGB32U = 0x8D71, <span class="comment">//GL_RGB32UI</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; INTERNAL_RGBA32U = 0x8D70, <span class="comment">//GL_RGBA32UI</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; INTERNAL_RGB10A2U = 0x906F, <span class="comment">//GL_RGB10_A2UI</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; INTERNAL_RGB10A2I_EXT = 0xFFFB,</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="comment">// signed integer formats</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; INTERNAL_R8I = 0x8231, <span class="comment">//GL_R8I</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; INTERNAL_RG8I = 0x8237, <span class="comment">//GL_RG8I</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; INTERNAL_RGB8I = 0x8D8F, <span class="comment">//GL_RGB8I</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; INTERNAL_RGBA8I = 0x8D8E, <span class="comment">//GL_RGBA8I</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; INTERNAL_R16I = 0x8233, <span class="comment">//GL_R16I</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; INTERNAL_RG16I = 0x8239, <span class="comment">//GL_RG16I</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; INTERNAL_RGB16I = 0x8D89, <span class="comment">//GL_RGB16I</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; INTERNAL_RGBA16I = 0x8D88, <span class="comment">//GL_RGBA16I</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; INTERNAL_R32I = 0x8235, <span class="comment">//GL_R32I</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; INTERNAL_RG32I = 0x823B, <span class="comment">//GL_RG32I</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; INTERNAL_RGB32I = 0x8D83, <span class="comment">//GL_RGB32I</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; INTERNAL_RGBA32I = 0x8D82, <span class="comment">//GL_RGBA32I</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="comment">// Floating formats</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; INTERNAL_R16F = 0x822D, <span class="comment">//GL_R16F</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; INTERNAL_RG16F = 0x822F, <span class="comment">//GL_RG16F</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; INTERNAL_RGB16F = 0x881B, <span class="comment">//GL_RGB16F</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; INTERNAL_RGBA16F = 0x881A, <span class="comment">//GL_RGBA16F</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; INTERNAL_R32F = 0x822E, <span class="comment">//GL_R32F</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; INTERNAL_RG32F = 0x8230, <span class="comment">//GL_RG32F</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; INTERNAL_RGB32F = 0x8815, <span class="comment">//GL_RGB32F</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; INTERNAL_RGBA32F = 0x8814, <span class="comment">//GL_RGBA32F</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; INTERNAL_R64F_EXT = 0xFFFA, <span class="comment">//GL_R64F</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; INTERNAL_RG64F_EXT = 0xFFF9, <span class="comment">//GL_RG64F</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; INTERNAL_RGB64F_EXT = 0xFFF8, <span class="comment">//GL_RGB64F</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; INTERNAL_RGBA64F_EXT = 0xFFF7, <span class="comment">//GL_RGBA64F</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="comment">// sRGB formats</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; INTERNAL_SR8 = 0x8FBD, <span class="comment">//GL_SR8_EXT</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; INTERNAL_SRG8 = 0x8FBE, <span class="comment">//GL_SRG8_EXT</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; INTERNAL_SRGB8 = 0x8C41, <span class="comment">//GL_SRGB8</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; INTERNAL_SRGB8_ALPHA8 = 0x8C43, <span class="comment">//GL_SRGB8_ALPHA8</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="comment">// Packed formats</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; INTERNAL_RGB9E5 = 0x8C3D, <span class="comment">//GL_RGB9_E5</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; INTERNAL_RG11B10F = 0x8C3A, <span class="comment">//GL_R11F_G11F_B10F</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; INTERNAL_RG3B2 = 0x2A10, <span class="comment">//GL_R3_G3_B2</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; INTERNAL_R5G6B5 = 0x8D62, <span class="comment">//GL_RGB565</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; INTERNAL_RGB5A1 = 0x8057, <span class="comment">//GL_RGB5_A1</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; INTERNAL_RGBA4 = 0x8056, <span class="comment">//GL_RGBA4</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; INTERNAL_RG4_EXT = 0xFFFE,</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// Luminance Alpha formats</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; INTERNAL_LA4 = 0x8043, <span class="comment">//GL_LUMINANCE4_ALPHA4</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; INTERNAL_L8 = 0x8040, <span class="comment">//GL_LUMINANCE8</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; INTERNAL_A8 = 0x803C, <span class="comment">//GL_ALPHA8</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; INTERNAL_LA8 = 0x8045, <span class="comment">//GL_LUMINANCE8_ALPHA8</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; INTERNAL_L16 = 0x8042, <span class="comment">//GL_LUMINANCE16</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; INTERNAL_A16 = 0x803E, <span class="comment">//GL_ALPHA16</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; INTERNAL_LA16 = 0x8048, <span class="comment">//GL_LUMINANCE16_ALPHA16</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="comment">// Depth formats</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; INTERNAL_D16 = 0x81A5, <span class="comment">//GL_DEPTH_COMPONENT16</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; INTERNAL_D24 = 0x81A6, <span class="comment">//GL_DEPTH_COMPONENT24</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; INTERNAL_D16S8_EXT = 0xFFF6,</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; INTERNAL_D24S8 = 0x88F0, <span class="comment">//GL_DEPTH24_STENCIL8</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; INTERNAL_D32 = 0x81A7, <span class="comment">//GL_DEPTH_COMPONENT32</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; INTERNAL_D32F = 0x8CAC, <span class="comment">//GL_DEPTH_COMPONENT32F</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; INTERNAL_D32FS8X24 = 0x8CAD, <span class="comment">//GL_DEPTH32F_STENCIL8</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; INTERNAL_S8_EXT = 0x8D48, <span class="comment">//GL_STENCIL_INDEX8</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">// Compressed formats</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; INTERNAL_RGB_DXT1 = 0x83F0, <span class="comment">//GL_COMPRESSED_RGB_S3TC_DXT1_EXT</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; INTERNAL_RGBA_DXT1 = 0x83F1, <span class="comment">//GL_COMPRESSED_RGBA_S3TC_DXT1_EXT</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; INTERNAL_RGBA_DXT3 = 0x83F2, <span class="comment">//GL_COMPRESSED_RGBA_S3TC_DXT3_EXT</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; INTERNAL_RGBA_DXT5 = 0x83F3, <span class="comment">//GL_COMPRESSED_RGBA_S3TC_DXT5_EXT</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; INTERNAL_R_ATI1N_UNORM = 0x8DBB, <span class="comment">//GL_COMPRESSED_RED_RGTC1</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; INTERNAL_R_ATI1N_SNORM = 0x8DBC, <span class="comment">//GL_COMPRESSED_SIGNED_RED_RGTC1</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; INTERNAL_RG_ATI2N_UNORM = 0x8DBD, <span class="comment">//GL_COMPRESSED_RG_RGTC2</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; INTERNAL_RG_ATI2N_SNORM = 0x8DBE, <span class="comment">//GL_COMPRESSED_SIGNED_RG_RGTC2</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; INTERNAL_RGB_BP_UNSIGNED_FLOAT = 0x8E8F, <span class="comment">//GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; INTERNAL_RGB_BP_SIGNED_FLOAT = 0x8E8E, <span class="comment">//GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; INTERNAL_RGB_BP_UNORM = 0x8E8C, <span class="comment">//GL_COMPRESSED_RGBA_BPTC_UNORM</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; INTERNAL_RGB_PVRTC_4BPPV1 = 0x8C00, <span class="comment">//GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; INTERNAL_RGB_PVRTC_2BPPV1 = 0x8C01, <span class="comment">//GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; INTERNAL_RGBA_PVRTC_4BPPV1 = 0x8C02, <span class="comment">//GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; INTERNAL_RGBA_PVRTC_2BPPV1 = 0x8C03, <span class="comment">//GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; INTERNAL_RGBA_PVRTC_4BPPV2 = 0x9137, <span class="comment">//GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; INTERNAL_RGBA_PVRTC_2BPPV2 = 0x9138, <span class="comment">//GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; INTERNAL_ATC_RGB = 0x8C92, <span class="comment">//GL_ATC_RGB_AMD</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; INTERNAL_ATC_RGBA_EXPLICIT_ALPHA = 0x8C93, <span class="comment">//GL_ATC_RGBA_EXPLICIT_ALPHA_AMD</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; INTERNAL_ATC_RGBA_INTERPOLATED_ALPHA = 0x87EE, <span class="comment">//GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD</span></div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; INTERNAL_RGB_ETC = 0x8D64, <span class="comment">//GL_COMPRESSED_RGB8_ETC1</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; INTERNAL_RGB_ETC2 = 0x9274, <span class="comment">//GL_COMPRESSED_RGB8_ETC2</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; INTERNAL_RGBA_PUNCHTHROUGH_ETC2 = 0x9276, <span class="comment">//GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; INTERNAL_RGBA_ETC2 = 0x9278, <span class="comment">//GL_COMPRESSED_RGBA8_ETC2_EAC</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; INTERNAL_R11_EAC = 0x9270, <span class="comment">//GL_COMPRESSED_R11_EAC</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; INTERNAL_SIGNED_R11_EAC = 0x9271, <span class="comment">//GL_COMPRESSED_SIGNED_R11_EAC</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; INTERNAL_RG11_EAC = 0x9272, <span class="comment">//GL_COMPRESSED_RG11_EAC</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; INTERNAL_SIGNED_RG11_EAC = 0x9273, <span class="comment">//GL_COMPRESSED_SIGNED_RG11_EAC</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; INTERNAL_RGBA_ASTC_4x4 = 0x93B0, <span class="comment">//GL_COMPRESSED_RGBA_ASTC_4x4_KHR</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; INTERNAL_RGBA_ASTC_5x4 = 0x93B1, <span class="comment">//GL_COMPRESSED_RGBA_ASTC_5x4_KHR</span></div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; INTERNAL_RGBA_ASTC_5x5 = 0x93B2, <span class="comment">//GL_COMPRESSED_RGBA_ASTC_5x5_KHR</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; INTERNAL_RGBA_ASTC_6x5 = 0x93B3, <span class="comment">//GL_COMPRESSED_RGBA_ASTC_6x5_KHR</span></div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; INTERNAL_RGBA_ASTC_6x6 = 0x93B4, <span class="comment">//GL_COMPRESSED_RGBA_ASTC_6x6_KHR</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; INTERNAL_RGBA_ASTC_8x5 = 0x93B5, <span class="comment">//GL_COMPRESSED_RGBA_ASTC_8x5_KHR</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; INTERNAL_RGBA_ASTC_8x6 = 0x93B6, <span class="comment">//GL_COMPRESSED_RGBA_ASTC_8x6_KHR</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; INTERNAL_RGBA_ASTC_8x8 = 0x93B7, <span class="comment">//GL_COMPRESSED_RGBA_ASTC_8x8_KHR</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; INTERNAL_RGBA_ASTC_10x5 = 0x93B8, <span class="comment">//GL_COMPRESSED_RGBA_ASTC_10x5_KHR</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; INTERNAL_RGBA_ASTC_10x6 = 0x93B9, <span class="comment">//GL_COMPRESSED_RGBA_ASTC_10x6_KHR</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; INTERNAL_RGBA_ASTC_10x8 = 0x93BA, <span class="comment">//GL_COMPRESSED_RGBA_ASTC_10x8_KHR</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; INTERNAL_RGBA_ASTC_10x10 = 0x93BB, <span class="comment">//GL_COMPRESSED_RGBA_ASTC_10x10_KHR</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; INTERNAL_RGBA_ASTC_12x10 = 0x93BC, <span class="comment">//GL_COMPRESSED_RGBA_ASTC_12x10_KHR</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; INTERNAL_RGBA_ASTC_12x12 = 0x93BD, <span class="comment">//GL_COMPRESSED_RGBA_ASTC_12x12_KHR</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="comment">// sRGB formats</span></div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; INTERNAL_SRGB_DXT1 = 0x8C4C, <span class="comment">//GL_COMPRESSED_SRGB_S3TC_DXT1_EXT</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; INTERNAL_SRGB_ALPHA_DXT1 = 0x8C4D, <span class="comment">//GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT</span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; INTERNAL_SRGB_ALPHA_DXT3 = 0x8C4E, <span class="comment">//GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; INTERNAL_SRGB_ALPHA_DXT5 = 0x8C4F, <span class="comment">//GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT</span></div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; INTERNAL_SRGB_BP_UNORM = 0x8E8D, <span class="comment">//GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM</span></div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; INTERNAL_SRGB_PVRTC_2BPPV1 = 0x8A54, <span class="comment">//GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT</span></div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; INTERNAL_SRGB_PVRTC_4BPPV1 = 0x8A55, <span class="comment">//GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT</span></div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; INTERNAL_SRGB_ALPHA_PVRTC_2BPPV1 = 0x8A56, <span class="comment">//GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT</span></div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; INTERNAL_SRGB_ALPHA_PVRTC_4BPPV1 = 0x8A57, <span class="comment">//GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; INTERNAL_SRGB_ALPHA_PVRTC_2BPPV2 = 0x93F0, <span class="comment">//COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; INTERNAL_SRGB_ALPHA_PVRTC_4BPPV2 = 0x93F1, <span class="comment">//GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG</span></div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; INTERNAL_SRGB8_ETC2 = 0x9275, <span class="comment">//GL_COMPRESSED_SRGB8_ETC2</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; INTERNAL_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9277, <span class="comment">//GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2</span></div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; INTERNAL_SRGB8_ALPHA8_ETC2_EAC = 0x9279, <span class="comment">//GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC</span></div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; INTERNAL_SRGB8_ALPHA8_ASTC_4x4 = 0x93D0, <span class="comment">//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR</span></div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; INTERNAL_SRGB8_ALPHA8_ASTC_5x4 = 0x93D1, <span class="comment">//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; INTERNAL_SRGB8_ALPHA8_ASTC_5x5 = 0x93D2, <span class="comment">//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; INTERNAL_SRGB8_ALPHA8_ASTC_6x5 = 0x93D3, <span class="comment">//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR</span></div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; INTERNAL_SRGB8_ALPHA8_ASTC_6x6 = 0x93D4, <span class="comment">//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; INTERNAL_SRGB8_ALPHA8_ASTC_8x5 = 0x93D5, <span class="comment">//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; INTERNAL_SRGB8_ALPHA8_ASTC_8x6 = 0x93D6, <span class="comment">//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; INTERNAL_SRGB8_ALPHA8_ASTC_8x8 = 0x93D7, <span class="comment">//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR</span></div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; INTERNAL_SRGB8_ALPHA8_ASTC_10x5 = 0x93D8, <span class="comment">//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR</span></div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; INTERNAL_SRGB8_ALPHA8_ASTC_10x6 = 0x93D9, <span class="comment">//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; INTERNAL_SRGB8_ALPHA8_ASTC_10x8 = 0x93DA, <span class="comment">//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; INTERNAL_SRGB8_ALPHA8_ASTC_10x10 = 0x93DB, <span class="comment">//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; INTERNAL_SRGB8_ALPHA8_ASTC_12x10 = 0x93DC, <span class="comment">//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR</span></div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; INTERNAL_SRGB8_ALPHA8_ASTC_12x12 = 0x93DD, <span class="comment">//GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR</span></div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; </div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; INTERNAL_ALPHA8 = 0x803C,</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; INTERNAL_ALPHA16 = 0x803E,</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; INTERNAL_LUMINANCE8 = 0x8040,</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; INTERNAL_LUMINANCE16 = 0x8042,</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; INTERNAL_LUMINANCE8_ALPHA8 = 0x8045,</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; INTERNAL_LUMINANCE16_ALPHA16 = 0x8048,</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; </div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; INTERNAL_R8_USCALED_GTC = 0xF000,</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; INTERNAL_R8_SSCALED_GTC,</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; INTERNAL_RG8_USCALED_GTC,</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; INTERNAL_RG8_SSCALED_GTC,</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; INTERNAL_RGB8_USCALED_GTC,</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; INTERNAL_RGB8_SSCALED_GTC,</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; INTERNAL_RGBA8_USCALED_GTC,</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; INTERNAL_RGBA8_SSCALED_GTC,</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; INTERNAL_RGB10A2_USCALED_GTC,</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; INTERNAL_RGB10A2_SSCALED_GTC,</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; INTERNAL_R16_USCALED_GTC,</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; INTERNAL_R16_SSCALED_GTC,</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; INTERNAL_RG16_USCALED_GTC,</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; INTERNAL_RG16_SSCALED_GTC,</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; INTERNAL_RGB16_USCALED_GTC,</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; INTERNAL_RGB16_SSCALED_GTC,</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; INTERNAL_RGBA16_USCALED_GTC,</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; INTERNAL_RGBA16_SSCALED_GTC,</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; };</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keyword">enum</span> external_format</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; {</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; EXTERNAL_NONE = 0, <span class="comment">//GL_NONE</span></div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; EXTERNAL_RED = 0x1903, <span class="comment">//GL_RED</span></div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; EXTERNAL_RG = 0x8227, <span class="comment">//GL_RG</span></div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; EXTERNAL_RGB= 0x1907, <span class="comment">//GL_RGB</span></div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; EXTERNAL_BGR = 0x80E0, <span class="comment">//GL_BGR</span></div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; EXTERNAL_RGBA = 0x1908, <span class="comment">//GL_RGBA</span></div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; EXTERNAL_BGRA = 0x80E1, <span class="comment">//GL_BGRA</span></div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; EXTERNAL_RED_INTEGER = 0x8D94, <span class="comment">//GL_RED_INTEGER</span></div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; EXTERNAL_RG_INTEGER = 0x8228, <span class="comment">//GL_RG_INTEGER</span></div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; EXTERNAL_RGB_INTEGER = 0x8D98, <span class="comment">//GL_RGB_INTEGER</span></div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; EXTERNAL_BGR_INTEGER = 0x8D9A, <span class="comment">//GL_BGR_INTEGER</span></div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; EXTERNAL_RGBA_INTEGER = 0x8D99, <span class="comment">//GL_RGBA_INTEGER</span></div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; EXTERNAL_BGRA_INTEGER = 0x8D9B, <span class="comment">//GL_BGRA_INTEGER</span></div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; EXTERNAL_DEPTH = 0x1902, <span class="comment">//GL_DEPTH_COMPONENT</span></div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; EXTERNAL_DEPTH_STENCIL = 0x84F9, <span class="comment">//GL_DEPTH_STENCIL</span></div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; EXTERNAL_STENCIL = 0x1901, <span class="comment">//GL_STENCIL_INDEX</span></div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; EXTERNAL_LUMINANCE = 0x1909, <span class="comment">//GL_LUMINANCE</span></div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; EXTERNAL_ALPHA = 0x1906, <span class="comment">//GL_ALPHA</span></div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; EXTERNAL_LUMINANCE_ALPHA = 0x190A, <span class="comment">//GL_LUMINANCE_ALPHA</span></div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; EXTERNAL_SRGB_EXT = 0x8C40, <span class="comment">//SRGB_EXT</span></div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; EXTERNAL_SRGB_ALPHA_EXT = 0x8C42 <span class="comment">//SRGB_ALPHA_EXT</span></div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; };</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keyword">enum</span> type_format</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; {</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; TYPE_NONE = 0, <span class="comment">//GL_NONE</span></div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; TYPE_I8 = 0x1400, <span class="comment">//GL_BYTE</span></div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; TYPE_U8 = 0x1401, <span class="comment">//GL_UNSIGNED_BYTE</span></div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; TYPE_I16 = 0x1402, <span class="comment">//GL_SHORT</span></div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; TYPE_U16 = 0x1403, <span class="comment">//GL_UNSIGNED_SHORT</span></div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; TYPE_I32 = 0x1404, <span class="comment">//GL_INT</span></div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; TYPE_U32 = 0x1405, <span class="comment">//GL_UNSIGNED_INT</span></div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; TYPE_I64 = 0x140E, <span class="comment">//GL_INT64_ARB</span></div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; TYPE_U64 = 0x140F, <span class="comment">//GL_UNSIGNED_INT64_ARB</span></div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; TYPE_F16 = 0x140B, <span class="comment">//GL_HALF_FLOAT</span></div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; TYPE_F16_OES = 0x8D61, <span class="comment">//GL_HALF_FLOAT_OES</span></div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; TYPE_F32 = 0x1406, <span class="comment">//GL_FLOAT</span></div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; TYPE_F64 = 0x140A, <span class="comment">//GL_DOUBLE</span></div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; TYPE_UINT32_RGB9_E5_REV = 0x8C3E, <span class="comment">//GL_UNSIGNED_INT_5_9_9_9_REV</span></div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; TYPE_UINT32_RG11B10F_REV = 0x8C3B, <span class="comment">//GL_UNSIGNED_INT_10F_11F_11F_REV</span></div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; TYPE_UINT8_RG3B2 = 0x8032, <span class="comment">//GL_UNSIGNED_BYTE_3_3_2</span></div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; TYPE_UINT8_RG3B2_REV = 0x8362, <span class="comment">//GL_UNSIGNED_BYTE_2_3_3_REV</span></div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; TYPE_UINT16_RGB5A1 = 0x8034, <span class="comment">//GL_UNSIGNED_SHORT_5_5_5_1</span></div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; TYPE_UINT16_RGB5A1_REV = 0x8366, <span class="comment">//GL_UNSIGNED_SHORT_1_5_5_5_REV</span></div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; TYPE_UINT16_R5G6B5 = 0x8363, <span class="comment">//GL_UNSIGNED_SHORT_5_6_5</span></div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; TYPE_UINT16_R5G6B5_REV = 0x8364, <span class="comment">//GL_UNSIGNED_SHORT_5_6_5_REV</span></div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; TYPE_UINT16_RGBA4 = 0x8033, <span class="comment">//GL_UNSIGNED_SHORT_4_4_4_4</span></div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; TYPE_UINT16_RGBA4_REV = 0x8365, <span class="comment">//GL_UNSIGNED_SHORT_4_4_4_4_REV</span></div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; TYPE_UINT32_RGBA8 = 0x8035, <span class="comment">//GL_UNSIGNED_SHORT_8_8_8_8</span></div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; TYPE_UINT32_RGBA8_REV = 0x8367, <span class="comment">//GL_UNSIGNED_SHORT_8_8_8_8_REV</span></div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; TYPE_UINT32_RGB10A2 = 0x8036, <span class="comment">//GL_UNSIGNED_INT_10_10_10_2</span></div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; TYPE_UINT32_RGB10A2_REV = 0x8368, <span class="comment">//GL_UNSIGNED_INT_2_10_10_10_REV</span></div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; TYPE_UINT8_RG4_REV_GTC = 0xFFFD,</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; TYPE_UINT16_A1RGB5_GTC = 0xFFFC</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; };</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keyword">enum</span> target</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; {</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; TARGET_1D = 0x0DE0,</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; TARGET_1D_ARRAY = 0x8C18,</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; TARGET_2D = 0x0DE1,</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; TARGET_2D_ARRAY = 0x8C1A,</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; TARGET_3D = 0x806F,</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; TARGET_RECT = 0x84F5,</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; TARGET_RECT_ARRAY = 0x84F5, <span class="comment">// Not supported by OpenGL</span></div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; TARGET_CUBE = 0x8513,</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; TARGET_CUBE_ARRAY = 0x9009</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; };</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keyword">enum</span> swizzle</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; {</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; SWIZZLE_RED = 0x1903, <span class="comment">//GL_RED</span></div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; SWIZZLE_GREEN = 0x1904, <span class="comment">//GL_GREEN</span></div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; SWIZZLE_BLUE = 0x1905, <span class="comment">//GL_BLUE</span></div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; SWIZZLE_ALPHA = 0x1906, <span class="comment">//GL_ALPHA</span></div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; SWIZZLE_ZERO = 0x0000, <span class="comment">//GL_ZERO</span></div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; SWIZZLE_ONE = 0x0001, <span class="comment">//GL_ONE</span></div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; };</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keyword">enum</span> profile</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; {</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; PROFILE_ES20,</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; PROFILE_ES30,</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; PROFILE_GL32,</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; PROFILE_GL33,</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; PROFILE_KTX</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; };</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keyword">typedef</span> glm::tvec4&lt;int&gt; swizzles;</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keyword">struct </span><a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a></div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; {</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; internal_format Internal;</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; external_format External;</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; type_format Type;</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; swizzles Swizzles;</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; };</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="code" href="a00002.html">gl</a>(profile Profile);</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; target <span class="keyword">const</span>&amp; <a class="code" href="a00002.html#ab38a3e0b9878adb8a6de97c0c00f3cff">translate</a>(<a class="code" href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">gli::target</a> Target) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">format</a> <a class="code" href="a00002.html#ab38a3e0b9878adb8a6de97c0c00f3cff">translate</a>(<a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">gli::format</a> Format, gli::swizzles <span class="keyword">const</span>&amp; Swizzle) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <a class="code" href="a00074.html#a387137c43ed9616d39ba90e890d181eb">gli::format</a> <a class="code" href="a00002.html#a9f79c9677bd9cd22648723a4d06612ee">find</a>(internal_format InternalFormat, external_format ExternalFormat, type_format Type);</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keyword">struct </span>format_desc</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; {</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; internal_format Internal;</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; external_format External;</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; type_format Type;</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Properties;</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; };</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordtype">bool</span> has_swizzle(profile Profile)<span class="keyword"> const</span></div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">return</span> Profile == PROFILE_ES30 || Profile == PROFILE_GL33;</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; }</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; gl::swizzles compute_swizzle(format_desc <span class="keyword">const</span>&amp; FormatDesc, gli::swizzles <span class="keyword">const</span>&amp; Swizzle) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; std::array&lt;format_desc, FORMAT_COUNT&gt; FormatDesc;</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; profile Profile;</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; };</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;}<span class="comment">//namespace gli</span></div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<span class="preprocessor">#include &quot;./core/gl.inl&quot;</span></div>
<div class="ttc" id="a00074_html_a387137c43ed9616d39ba90e890d181eb"><div class="ttname"><a href="a00074.html#a387137c43ed9616d39ba90e890d181eb">gli::format</a></div><div class="ttdeci">format</div><div class="ttdoc">Texture data format. </div><div class="ttdef"><b>Definition:</b> <a href="a00033_source.html#l00012">format.hpp:12</a></div></div>
<div class="ttc" id="a00002_html_ab38a3e0b9878adb8a6de97c0c00f3cff"><div class="ttname"><a href="a00002.html#ab38a3e0b9878adb8a6de97c0c00f3cff">gli::gl::translate</a></div><div class="ttdeci">target const &amp; translate(gli::target Target) const </div><div class="ttdoc">Convert GLI targets into OpenGL texture targets. </div></div>
<div class="ttc" id="a00002_html_a9f79c9677bd9cd22648723a4d06612ee"><div class="ttname"><a href="a00002.html#a9f79c9677bd9cd22648723a4d06612ee">gli::gl::find</a></div><div class="ttdeci">gli::format find(internal_format InternalFormat, external_format ExternalFormat, type_format Type)</div><div class="ttdoc">Convert an OpenGL format into a GLI format. </div></div>
<div class="ttc" id="a00061_html"><div class="ttname"><a href="a00061.html">target.hpp</a></div><div class="ttdoc">Include to use the target enum and query properties of targets. </div></div>
<div class="ttc" id="a00074_html_a5d2c023108742a1ce78ba9823c06ea35"><div class="ttname"><a href="a00074.html#a5d2c023108742a1ce78ba9823c06ea35">gli::target</a></div><div class="ttdeci">target</div><div class="ttdoc">Texture target: type/shape of the texture storage_linear. </div><div class="ttdef"><b>Definition:</b> <a href="a00061_source.html#l00009">target.hpp:9</a></div></div>
<div class="ttc" id="a00074_html"><div class="ttname"><a href="a00074.html">gli</a></div><div class="ttdoc">Namespace where all the classes and functions provided by GLI are exposed. </div><div class="ttdef"><b>Definition:</b> <a href="a00020_source.html#l00006">clear.hpp:6</a></div></div>
<div class="ttc" id="a00033_html"><div class="ttname"><a href="a00033.html">format.hpp</a></div><div class="ttdoc">Include to use the format enum and query properties of formats. </div></div>
<div class="ttc" id="a00002_html"><div class="ttname"><a href="a00002.html">gli::gl</a></div><div class="ttdoc">Translation class to convert GLI enums into OpenGL values. </div><div class="ttdef"><b>Definition:</b> <a href="a00035_source.html#l00013">gl.hpp:13</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,118 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: gli.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">gli.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Include to include everything in GLI which is not recommendated due to compilation time cost.
<a href="#details">More...</a></p>
<p><a href="a00036_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:a00074"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html">gli</a></td></tr>
<tr class="memdesc:a00074"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace where all the classes and functions provided by GLI are exposed. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Include to include everything in GLI which is not recommendated due to compilation time cost. </p>
<p>Definition in file <a class="el" href="a00036_source.html">gli.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,179 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: gli.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">gli.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="a00036.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#define GLI_VERSION 82</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#define GLI_VERSION_MAJOR 0</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#define GLI_VERSION_MINOR 8</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#define GLI_VERSION_PATCH 2</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define GLI_VERSION_REVISION 0</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00074.html">gli</a></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;{</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;}<span class="comment">//namespace gli</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00033.html">format.hpp</a>&quot;</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00061.html">target.hpp</a>&quot;</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00038.html">levels.hpp</a>&quot;</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00037.html">image.hpp</a>&quot;</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00062.html">texture.hpp</a>&quot;</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00063.html">texture1d.hpp</a>&quot;</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00064.html">texture1d_array.hpp</a>&quot;</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00065.html">texture2d.hpp</a>&quot;</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00066.html">texture2d_array.hpp</a>&quot;</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00067.html">texture3d.hpp</a>&quot;</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00068.html">texture_cube.hpp</a>&quot;</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00069.html">texture_cube_array.hpp</a>&quot;</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00048.html">sampler1d.hpp</a>&quot;</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00049.html">sampler1d_array.hpp</a>&quot;</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00050.html">sampler2d.hpp</a>&quot;</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00051.html">sampler2d_array.hpp</a>&quot;</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00052.html">sampler3d.hpp</a>&quot;</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00053.html">sampler_cube.hpp</a>&quot;</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00054.html">sampler_cube_array.hpp</a>&quot;</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00027.html">duplicate.hpp</a>&quot;</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00072.html">view.hpp</a>&quot;</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00022.html">comparison.hpp</a>&quot;</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00046.html">reduce.hpp</a>&quot;</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00070.html">transform.hpp</a>&quot;</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00039.html">load.hpp</a>&quot;</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00055.html">save.hpp</a>&quot;</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00035.html">gl.hpp</a>&quot;</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00028.html">dx.hpp</a>&quot;</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="preprocessor">#include &quot;./core/flip.hpp&quot;</span></div>
<div class="ttc" id="a00022_html"><div class="ttname"><a href="a00022.html">comparison.hpp</a></div><div class="ttdoc">Include to use operators to compare whether two textures or images are equal. </div></div>
<div class="ttc" id="a00068_html"><div class="ttname"><a href="a00068.html">texture_cube.hpp</a></div><div class="ttdoc">Include to use cube map textures. </div></div>
<div class="ttc" id="a00039_html"><div class="ttname"><a href="a00039.html">load.hpp</a></div><div class="ttdoc">Include to load DDS, KTX or KMG textures from files or memory. </div></div>
<div class="ttc" id="a00027_html"><div class="ttname"><a href="a00027.html">duplicate.hpp</a></div><div class="ttdoc">Include to duplicate textures, images or a subset of either textures or an image. ...</div></div>
<div class="ttc" id="a00064_html"><div class="ttname"><a href="a00064.html">texture1d_array.hpp</a></div><div class="ttdoc">Include to use 1d array textures. </div></div>
<div class="ttc" id="a00035_html"><div class="ttname"><a href="a00035.html">gl.hpp</a></div><div class="ttdoc">Include to translate GLI enums to OpenGL enums. </div></div>
<div class="ttc" id="a00062_html"><div class="ttname"><a href="a00062.html">texture.hpp</a></div><div class="ttdoc">Include to use generic textures which can represent any texture target but they don&#39;t have target spe...</div></div>
<div class="ttc" id="a00050_html"><div class="ttname"><a href="a00050.html">sampler2d.hpp</a></div><div class="ttdoc">Include to sample 2d textures. </div></div>
<div class="ttc" id="a00067_html"><div class="ttname"><a href="a00067.html">texture3d.hpp</a></div><div class="ttdoc">Include to use 3d textures. </div></div>
<div class="ttc" id="a00055_html"><div class="ttname"><a href="a00055.html">save.hpp</a></div><div class="ttdoc">Include to save DDS, KTX or KMG textures to files or memory. </div></div>
<div class="ttc" id="a00070_html"><div class="ttname"><a href="a00070.html">transform.hpp</a></div><div class="ttdoc">Include to perform arithmetic per texel between two textures. </div></div>
<div class="ttc" id="a00063_html"><div class="ttname"><a href="a00063.html">texture1d.hpp</a></div><div class="ttdoc">Include to use 1d textures. </div></div>
<div class="ttc" id="a00038_html"><div class="ttname"><a href="a00038.html">levels.hpp</a></div><div class="ttdoc">Include to compute the number of mipmaps levels necessary to create a mipmap complete texture...</div></div>
<div class="ttc" id="a00061_html"><div class="ttname"><a href="a00061.html">target.hpp</a></div><div class="ttdoc">Include to use the target enum and query properties of targets. </div></div>
<div class="ttc" id="a00046_html"><div class="ttname"><a href="a00046.html">reduce.hpp</a></div><div class="ttdoc">Include to perform reduction operations. </div></div>
<div class="ttc" id="a00049_html"><div class="ttname"><a href="a00049.html">sampler1d_array.hpp</a></div><div class="ttdoc">Include to sample 1d array textures. </div></div>
<div class="ttc" id="a00066_html"><div class="ttname"><a href="a00066.html">texture2d_array.hpp</a></div><div class="ttdoc">Include to use 2d array textures. </div></div>
<div class="ttc" id="a00037_html"><div class="ttname"><a href="a00037.html">image.hpp</a></div><div class="ttdoc">Include to use images, a representation of a single texture level. </div></div>
<div class="ttc" id="a00054_html"><div class="ttname"><a href="a00054.html">sampler_cube_array.hpp</a></div><div class="ttdoc">Include to sample cube map array textures. </div></div>
<div class="ttc" id="a00052_html"><div class="ttname"><a href="a00052.html">sampler3d.hpp</a></div><div class="ttdoc">Include to sample 3d textures. </div></div>
<div class="ttc" id="a00069_html"><div class="ttname"><a href="a00069.html">texture_cube_array.hpp</a></div><div class="ttdoc">Include to use cube map array textures. </div></div>
<div class="ttc" id="a00074_html"><div class="ttname"><a href="a00074.html">gli</a></div><div class="ttdoc">Namespace where all the classes and functions provided by GLI are exposed. </div><div class="ttdef"><b>Definition:</b> <a href="a00020_source.html#l00006">clear.hpp:6</a></div></div>
<div class="ttc" id="a00072_html"><div class="ttname"><a href="a00072.html">view.hpp</a></div><div class="ttdoc">Include create views of textures, either to isolate a subset or to reinterpret data without memory co...</div></div>
<div class="ttc" id="a00033_html"><div class="ttname"><a href="a00033.html">format.hpp</a></div><div class="ttdoc">Include to use the format enum and query properties of formats. </div></div>
<div class="ttc" id="a00065_html"><div class="ttname"><a href="a00065.html">texture2d.hpp</a></div><div class="ttdoc">Include to use 2d textures. </div></div>
<div class="ttc" id="a00053_html"><div class="ttname"><a href="a00053.html">sampler_cube.hpp</a></div><div class="ttdoc">Include to sample cube map textures. </div></div>
<div class="ttc" id="a00028_html"><div class="ttname"><a href="a00028.html">dx.hpp</a></div><div class="ttdoc">Include to translate GLI enums to DirectX enums. </div></div>
<div class="ttc" id="a00051_html"><div class="ttname"><a href="a00051.html">sampler2d_array.hpp</a></div><div class="ttdoc">Include to sample 2d array textures. </div></div>
<div class="ttc" id="a00048_html"><div class="ttname"><a href="a00048.html">sampler1d.hpp</a></div><div class="ttdoc">Include to sample 1d textures. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@ -1,125 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.8.2 API documentation: image.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.8.2 API documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_b73546165ac7e018753d96ca90d34595.html">gli</a></li><li class="navelem"><a class="el" href="dir_ae6bff3f3cf3c65a1db429f9020bb7b3.html">gli</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">image.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Include to use images, a representation of a single texture level.
<a href="#details">More...</a></p>
<p><a href="a00037_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00003.html">image</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Image, representation for a single texture level. <a href="a00003.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:a00074"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html">gli</a></td></tr>
<tr class="memdesc:a00074"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace where all the classes and functions provided by GLI are exposed. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Include to use images, a representation of a single texture level. </p>
<p>Definition in file <a class="el" href="a00037_source.html">image.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More