flip the viewport in vulkan so that top is on the top
This commit is contained in:
@@ -22,10 +22,10 @@ void gnCommandBeginRenderPassFn(struct gnCommandBuffer_t* buffer, struct gnRende
|
|||||||
.framebuffer = passInfo.framebuffer->framebuffer->framebuffer,
|
.framebuffer = passInfo.framebuffer->framebuffer->framebuffer,
|
||||||
.renderArea = {
|
.renderArea = {
|
||||||
.extent = { passInfo.size.x, passInfo.size.y },
|
.extent = { passInfo.size.x, passInfo.size.y },
|
||||||
.offset = { passInfo.offset.x, passInfo.offset.x }
|
.offset = { passInfo.offset.x, passInfo.offset.y }
|
||||||
},
|
},
|
||||||
.clearValueCount = passInfo.clearValueCount,
|
.clearValueCount = passInfo.clearValueCount,
|
||||||
.pClearValues = values
|
.pClearValues = values,
|
||||||
};
|
};
|
||||||
|
|
||||||
vkCmdBeginRenderPass(buffer->commandBuffer->buffer, &renderPassInfo, VK_SUBPASS_CONTENTS_INLINE);
|
vkCmdBeginRenderPass(buffer->commandBuffer->buffer, &renderPassInfo, VK_SUBPASS_CONTENTS_INLINE);
|
||||||
@@ -39,9 +39,9 @@ void gnCommandBindGraphicsPipelineFn(struct gnCommandBuffer_t* buffer, struct gn
|
|||||||
void gnCommandSetViewportFn(struct gnCommandBuffer_t* buffer, struct gnViewport_t viewport) {
|
void gnCommandSetViewportFn(struct gnCommandBuffer_t* buffer, struct gnViewport_t viewport) {
|
||||||
VkViewport vkViewport = {
|
VkViewport vkViewport = {
|
||||||
.x = viewport.position.x,
|
.x = viewport.position.x,
|
||||||
.y = viewport.position.y,
|
.y = viewport.size.y,
|
||||||
.width = viewport.size.x,
|
.width = viewport.size.x,
|
||||||
.height = viewport.size.y,
|
.height = -viewport.size.y,
|
||||||
.minDepth = viewport.minDepth,
|
.minDepth = viewport.minDepth,
|
||||||
.maxDepth = viewport.maxDepth
|
.maxDepth = viewport.maxDepth
|
||||||
};
|
};
|
||||||
|
@@ -65,10 +65,10 @@ gnReturnCode gnCreateOutputDeviceFn(gnOutputDevice* outputDevice, gnInstance* in
|
|||||||
}
|
}
|
||||||
|
|
||||||
void gnWaitForDeviceFn(const gnOutputDevice* device) {
|
void gnWaitForDeviceFn(const gnOutputDevice* device) {
|
||||||
// vkDeviceWaitIdle(device->outputDevice->device);
|
vkDeviceWaitIdle(device->outputDevice->device);
|
||||||
}
|
}
|
||||||
|
|
||||||
void gnDestroyOutputDeviceFn(gnOutputDevice* device) {
|
void gnDestroyOutputDeviceFn(gnOutputDevice* device) {
|
||||||
// vkDestroyCommandPool(device.outputDevice->device, device.outputDevice->commandPool, nullptr);
|
|
||||||
vkDestroyDevice(device->outputDevice->device, NULL);
|
vkDestroyDevice(device->outputDevice->device, NULL);
|
||||||
|
free(device->outputDevice);
|
||||||
}
|
}
|
||||||
|
@@ -113,7 +113,7 @@ gnReturnCode gnCreateGraphicsPipelineFn(struct gnGraphicsPipeline_t* graphicsPip
|
|||||||
.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
|
.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
|
||||||
.polygonMode = vkGryphnPolygonMode(info.fillMode),
|
.polygonMode = vkGryphnPolygonMode(info.fillMode),
|
||||||
.lineWidth = 1.0f,
|
.lineWidth = 1.0f,
|
||||||
.frontFace = ( info.cullMode.direction == GN_DIRECTION_CLOCK_WISE ) ? VK_FRONT_FACE_CLOCKWISE : VK_FRONT_FACE_COUNTER_CLOCKWISE,
|
.frontFace = ( info.cullMode.direction == GN_DIRECTION_CLOCK_WISE ) ? VK_FRONT_FACE_COUNTER_CLOCKWISE : VK_FRONT_FACE_CLOCKWISE,
|
||||||
.cullMode = vkGryphnCullMode(info.cullMode.face),
|
.cullMode = vkGryphnCullMode(info.cullMode.face),
|
||||||
.depthBiasEnable = VK_FALSE,
|
.depthBiasEnable = VK_FALSE,
|
||||||
.depthBiasConstantFactor = 0.0f,
|
.depthBiasConstantFactor = 0.0f,
|
||||||
|
@@ -89,6 +89,8 @@ typedef struct gnDeviceFunctions_t {
|
|||||||
|
|
||||||
gnReturnCode (*_gnSubmit)(struct gnOutputDevice_t* device, struct gnSubmitInfo_t submit);
|
gnReturnCode (*_gnSubmit)(struct gnOutputDevice_t* device, struct gnSubmitInfo_t submit);
|
||||||
gnReturnCode (*_gnPresent)(struct gnOutputDevice_t* device, struct gnPresentInfo_t info);
|
gnReturnCode (*_gnPresent)(struct gnOutputDevice_t* device, struct gnPresentInfo_t info);
|
||||||
|
|
||||||
|
void (*_gnWaitForDevice)(struct gnOutputDevice_t* device);
|
||||||
} gnDeviceFunctions;
|
} gnDeviceFunctions;
|
||||||
|
|
||||||
typedef struct gnCommandFunctions_t {
|
typedef struct gnCommandFunctions_t {
|
||||||
|
@@ -91,6 +91,7 @@ void gnLoadDeviceFunctions(struct gnDynamicLibrary_t* lib, struct gnDeviceFuncti
|
|||||||
gnLoadDLLFunction(lib, functions->_gnDestroyFence, "gnDestroyFenceFn");
|
gnLoadDLLFunction(lib, functions->_gnDestroyFence, "gnDestroyFenceFn");
|
||||||
gnLoadDLLFunction(lib, functions->_gnSubmit, "gnSubmitFn");
|
gnLoadDLLFunction(lib, functions->_gnSubmit, "gnSubmitFn");
|
||||||
gnLoadDLLFunction(lib, functions->_gnPresent, "gnPresentFn");
|
gnLoadDLLFunction(lib, functions->_gnPresent, "gnPresentFn");
|
||||||
|
gnLoadDLLFunction(lib, functions->_gnWaitForDevice, "gnWaitForDeviceFn");
|
||||||
}
|
}
|
||||||
|
|
||||||
void gnLoadCommandFunctions(struct gnDynamicLibrary_t* lib, struct gnCommandFunctions_t* functions) {
|
void gnLoadCommandFunctions(struct gnDynamicLibrary_t* lib, struct gnCommandFunctions_t* functions) {
|
||||||
|
@@ -17,6 +17,9 @@ gnReturnCode gnCreateOutputDevice(gnOutputDevice* outputDevice, gnInstance* inst
|
|||||||
outputDevice->deviceInfo = deviceInfo;
|
outputDevice->deviceInfo = deviceInfo;
|
||||||
return instance->functions->_gnCreateOutputDevoce(outputDevice, instance, deviceInfo);
|
return instance->functions->_gnCreateOutputDevoce(outputDevice, instance, deviceInfo);
|
||||||
}
|
}
|
||||||
|
void gnWaitForDevice(gnOutputDevice *device) {
|
||||||
|
device->deviceFunctions->_gnWaitForDevice(device);
|
||||||
|
}
|
||||||
void gnDestroyOutputDevice(gnOutputDevice* device) {
|
void gnDestroyOutputDevice(gnOutputDevice* device) {
|
||||||
device->instance->functions->_gnDestroyOutputDevice(device);
|
device->instance->functions->_gnDestroyOutputDevice(device);
|
||||||
}
|
}
|
||||||
|
@@ -26,6 +26,5 @@ typedef struct gnOutputDevice_t {
|
|||||||
} gnOutputDevice;
|
} gnOutputDevice;
|
||||||
|
|
||||||
gnReturnCode gnCreateOutputDevice(gnOutputDevice* outputDevice, gnInstance* instance, struct gnOutputDeviceInfo_t deviceInfo);
|
gnReturnCode gnCreateOutputDevice(gnOutputDevice* outputDevice, gnInstance* instance, struct gnOutputDeviceInfo_t deviceInfo);
|
||||||
|
void gnWaitForDevice(gnOutputDevice* device);
|
||||||
void gnDestroyOutputDevice(gnOutputDevice* device);
|
void gnDestroyOutputDevice(gnOutputDevice* device);
|
||||||
|
|
||||||
// inline void (*gnWaitForDevice)(const gnOutputDevice& device);
|
|
||||||
|
Reference in New Issue
Block a user