diff static_utils.nim @ 1160:836dc1eda5e3 compiletime-tests

did: some stuff
author sam <sam@basx.dev>
date Wed, 19 Jun 2024 09:17:24 +0700
parents e7cbb13999e4
children dbca0528c714
line wrap: on
line diff
--- a/static_utils.nim	Mon Jun 17 22:21:59 2024 +0700
+++ b/static_utils.nim	Wed Jun 19 09:17:24 2024 +0700
@@ -106,18 +106,18 @@
   else:
     return 1
 
-
 type
-  Renderable[IndexType: static VkIndexType] = object
+  Renderable = object
     buffers: seq[VkBuffer]
     offsets: seq[VkDeviceSize]
     instanceCount: uint32
-    when IndexType == VK_INDEX_TYPE_NONE_KHR:
-      vertexCount: uint32
-    else:
-      indexBuffer: VkBuffer
-      indexCount: uint32
-      indexBufferOffset: VkDeviceSize
+    case indexType: VkIndexType
+      of VK_INDEX_TYPE_NONE_KHR:
+        vertexCount: uint32
+      of VK_INDEX_TYPE_UINT8_EXT, VK_INDEX_TYPE_UINT16, VK_INDEX_TYPE_UINT32:
+        indexBuffer: VkBuffer
+        indexCount: uint32
+        indexBufferOffset: VkDeviceSize
   Pipeline = object
     pipeline: VkPipeline
     layout: VkPipelineLayout
@@ -271,7 +271,7 @@
   )
 
 
-proc Render*[IndexType: static VkIndexType](renderable: Renderable[IndexType], commandBuffer: VkCommandBuffer, pipeline: Pipeline, frameInFlight: int) =
+proc Render*(renderable: Renderable, commandBuffer: VkCommandBuffer, pipeline: Pipeline, frameInFlight: int) =
   assert 0 <= frameInFlight and frameInFlight < 2
   commandBuffer.vkCmdBindPipeline(VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline.pipeline)
   commandBuffer.vkCmdBindDescriptorSets(
@@ -289,7 +289,7 @@
     pBuffers = renderable.buffers.ToCPointer(),
     pOffsets = renderable.offsets.ToCPointer()
   )
-  when IndexType != VK_INDEX_TYPE_NONE_KHR:
+  if renderable.indexType != VK_INDEX_TYPE_NONE_KHR:
     commandBuffer.vkCmdBindIndexBuffer(
       renderable.indexBuffer,
       renderable.indexBufferOffset,