34
34
#include < glm/gtc/type_ptr.hpp>
35
35
#include < glm/ext.hpp> // "glm/gtx/string_cast.hpp"
36
36
37
- float vertexInfo [][3 ] = {
37
+ float vertexInfo2 [][3 ] = {
38
38
{-0 .5f , -0 .5f , 0 .0f }, {1 .0f , 0 .0f , 0 .0f },
39
39
{0 .5f , -0 .5f , 0 .0f }, {0 .0f , 1 .0f , 0 .0f },
40
40
{0 .5f , 0 .5f , 0 .0f }, {0 .0f , 0 .0f , 1 .0f },
41
41
{-0 .5f , 0 .5f , 0 .0f }, {1 .0f , 1 .0f , 1 .0f }
42
42
};
43
43
44
- const uint16_t indices [] = {
45
- 0 , 1 , 2 , 2 , 3 , 0
44
+ const uint16_t indices2 [] = {
45
+ 0 , 1 , 2 , 2 , 3 , 1
46
46
};
47
47
48
48
Renderer::Renderer (VkExtent2D& extent, VkPhysicalDeviceMemoryProperties& memProps)
49
49
: imageExtent(extent),
50
50
memProperties(memProps)
51
51
{
52
+ numVertsX = 7 ;
53
+ numVertsY = 7 ;
54
+
55
+ numVerts = numVertsX * numVertsY;
56
+ numPrims = (numVertsX - 1 ) * (numVertsY - 1 ) * 2 ;
57
+
58
+ uint32_t numComponents = 3 ;
59
+
60
+ uint32_t vertInfoSize = sizeof (float )*numComponents*numVerts*2 ;
61
+
62
+ mat4Size = vertInfoSize;
63
+
64
+ vertexInfo = static_cast <float *>(malloc (vertInfoSize));
65
+
66
+ numIndices = numPrims * 3 ;
67
+
68
+ indicesBufferSize = sizeof (uint16_t )*numIndices;
69
+
70
+ indices = static_cast <uint16_t *>(malloc (indicesBufferSize));
71
+
52
72
framebuffers = static_cast <VkFramebuffer*>(malloc (sizeof (VkFramebuffer)*numFBOs));
53
73
drawCommandBuffers = static_cast <VkCommandBuffer*>(malloc (sizeof (VkCommandBuffer)*numDrawCmdBuffers));
54
74
attributeDescriptions = static_cast <VkVertexInputAttributeDescription*>(malloc (sizeof (VkVertexInputAttributeDescription)*numAttrDesc));
@@ -59,6 +79,8 @@ Renderer::~Renderer()
59
79
free (framebuffers);
60
80
free (drawCommandBuffers);
61
81
free (attributeDescriptions);
82
+ free (vertexInfo);
83
+ free (indices);
62
84
}
63
85
64
86
bool Renderer::Init (VkDevice& device, const VkFormat& surfaceFormat, const VkImageView* imageViews, uint32_t queueFamilyId)
@@ -70,6 +92,53 @@ bool Renderer::Init(VkDevice& device, const VkFormat& surfaceFormat, const VkIma
70
92
size_t fragmentShaderFileSize;
71
93
char * fragmentShader;
72
94
95
+ float delta = 0 .5f ;
96
+ uint32_t index = 0 ;
97
+ float xStartPos = - ((numVertsX - 1 ) * delta) / 2 ;
98
+ float yStartPos = - ((numVertsY - 1 ) * delta) / 2 ;
99
+ float xPos = xStartPos;
100
+ float yPos = yStartPos;
101
+ float zPos = 0 .0f ;
102
+
103
+ for (uint32_t i = 0 ; i < numVertsY; ++i)
104
+ {
105
+ for (uint32_t j = 0 ; j < numVertsX; ++j)
106
+ {
107
+ vertexInfo[index ] = xPos;
108
+ vertexInfo[index + 1 ] = yPos;
109
+ vertexInfo[index + 2 ] = zPos;
110
+
111
+ vertexInfo[index + 3 ] = 0 .0f ;
112
+ vertexInfo[index + 4 ] = 0 .0f ;
113
+ vertexInfo[index + 5 ] = 1 .0f ;
114
+
115
+ index += 6 ;
116
+ xPos += delta;
117
+ }
118
+
119
+ xPos = xStartPos;
120
+
121
+ yPos += delta;
122
+ }
123
+
124
+ index = 0 ;
125
+
126
+ for (uint32_t i = 0 ; i < numVertsY - 1 ; ++i)
127
+ {
128
+ for (uint32_t j = 0 ; j < numVertsX - 1 ; ++j)
129
+ {
130
+ indices[index ] = i * numVertsX + j;
131
+ indices[index + 1 ] = indices[index ] + 1 ;
132
+ indices[index + 2 ] = indices[index ] + numVertsX;
133
+
134
+ indices[index + 3 ] = indices[index + 2 ];
135
+ indices[index + 4 ] = indices[index + 3 ] + 1 ;
136
+ indices[index + 5 ] = indices[index + 1 ];
137
+
138
+ index += 6 ;
139
+ }
140
+ }
141
+
73
142
SetupServerSideVertexBuffer (device);
74
143
75
144
SetupIndexBuffer (device);
@@ -172,7 +241,7 @@ bool Renderer::Init(VkDevice& device, const VkFormat& surfaceFormat, const VkIma
172
241
rasterizer.rasterizerDiscardEnable = VK_FALSE;
173
242
rasterizer.polygonMode = VK_POLYGON_MODE_FILL;
174
243
rasterizer.lineWidth = 1 .0f ;
175
- rasterizer.cullMode = VK_CULL_MODE_BACK_BIT;
244
+ // rasterizer.cullMode = VK_CULL_MODE_BACK_BIT;
176
245
rasterizer.frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE;
177
246
rasterizer.depthBiasEnable = VK_FALSE;
178
247
// rasterizer.depthBiasConstantFactor = 0.0f;
@@ -440,7 +509,7 @@ void Renderer::ConstructFrames()
440
509
vkCmdBindVertexBuffers (drawCommandBuffers[i], 0 , 1 , &vertexBuffer, offsets);
441
510
vkCmdBindIndexBuffer (drawCommandBuffers[i], indexBuffer, 0 , VK_INDEX_TYPE_UINT16);
442
511
443
- vkCmdDrawIndexed (drawCommandBuffers[i], sizeof (indices) , 1 , 0 , 0 , 0 );
512
+ vkCmdDrawIndexed (drawCommandBuffers[i], numIndices , 1 , 0 , 0 , 0 );
444
513
445
514
vkCmdEndRenderPass (drawCommandBuffers[i]);
446
515
@@ -615,7 +684,7 @@ bool Renderer::SetupClientSideVertexBuffer(VkDevice& device)
615
684
616
685
bool Renderer::SetupServerSideVertexBuffer (VkDevice& device)
617
686
{
618
- VkDeviceSize size = sizeof (vertexInfo);
687
+ VkDeviceSize size = mat4Size; // sizeof(vertexInfo);
619
688
620
689
VkMemoryPropertyFlags properties = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT;
621
690
VkBufferUsageFlags usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT;
@@ -679,10 +748,10 @@ VkCommandBuffer& Renderer::TransferStaticBuffers(VkDevice& device)
679
748
// copyRegion.srcOffset = 0;
680
749
// copyRegion.dstOffset = 0;
681
750
682
- copyRegion.size = sizeof (vertexInfo);
751
+ copyRegion.size = mat4Size; // sizeof(vertexInfo);
683
752
vkCmdCopyBuffer (staticTransferCommandBuffer, vertexTransferBuffer, vertexBuffer, 1 , ©Region);
684
753
685
- copyRegion.size = sizeof (indices) ;
754
+ copyRegion.size = indicesBufferSize ;
686
755
vkCmdCopyBuffer (staticTransferCommandBuffer, indexTransferBuffer, indexBuffer, 1 , ©Region);
687
756
688
757
vkEndCommandBuffer (staticTransferCommandBuffer);
@@ -716,7 +785,7 @@ VkCommandBuffer& Renderer::TransferDynamicBuffers(VkDevice& device)
716
785
717
786
bool Renderer::SetupIndexBuffer (VkDevice& device)
718
787
{
719
- VkDeviceSize size = sizeof (indices) ;
788
+ VkDeviceSize size = indicesBufferSize ;
720
789
721
790
VkMemoryPropertyFlags properties = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT;
722
791
VkBufferUsageFlags usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT;
0 commit comments