[Feat] (MG_Test/Backend/DirectVulkan): test glDrawElements

This commit is contained in:
2026-02-17 09:48:36 +08:00
parent 7d4ebfc305
commit 7b7e00dbb3
2 changed files with 29 additions and 5 deletions
+4
View File
@@ -107,6 +107,7 @@ set(SPIRV_CROSS_STATIC ON CACHE BOOL "Prefer static libs" FORCE)
# add_subdirectory(3rdparty/DiligentCore)
add_subdirectory(3rdparty/glslang)
add_subdirectory(3rdparty/SPIRV-Cross)
add_subdirectory(3rdparty/VulkanMemoryAllocator)
set(XXHASH_BUILD_XXHSUM OFF)
option(BUILD_SHARED_LIBS OFF)
@@ -208,10 +209,12 @@ set(SOURCE_FILES
MobileGL/MG_Backend/DirectGLES/Managers.cpp
MobileGL/MG_Backend/DirectVulkan/DirectVulkan.cpp
MobileGL/MG_Backend/DirectVulkan/VmaImpl.cpp
MobileGL/MG_Backend/DirectVulkan/Renderer/VulkanRenderer.cpp
MobileGL/MG_Backend/DirectVulkan/Renderer/SwapchainObject.cpp
MobileGL/MG_Backend/DirectVulkan/Renderer/FrameContext.cpp
MobileGL/MG_Backend/DirectVulkan/Renderer/ProgramFactory.cpp
MobileGL/MG_Backend/DirectVulkan/Renderer/VkBufferObject.cpp
MobileGL/MG_State/GLState/Core.cpp
MobileGL/MG_State/GLState/ErrorState/Error.cpp
@@ -246,6 +249,7 @@ set(MOBILEGL_LINK_LIBRARIES
SPIRV-Tools-opt
SPIRV-Tools
xxHash::xxhash
GPUOpen::VulkanMemoryAllocator
)
set(MOBILEGL_INCLUDE_DIR
@@ -8,20 +8,26 @@
#include <iostream>
#include <vector>
#include <cassert>
#include <vulkan/vulkan.h>
#define GLFW_INCLUDE_NONE
#include <GLFW/glfw3.h>
#define EGLAPI
#define GL_GLEXT_PROTOTYPES
#include <GL/glcorearb.h>
#include <GL/glext.h>
#undef GL_GLEXT_PROTOTYPES
#ifndef EGLAPI
#define EGLAPI extern
#endif
#include <EGL/egl.h>
#ifdef _WIN32
#define GLFW_EXPOSE_NATIVE_WIN32
#elif defined(__APPLE__)
#define GLFW_EXPOSE_NATIVE_COCOA
#endif
#include "Init.h"
#include "MG_Backend/DirectVulkan/DirectVulkan.h"
#include "MG_Backend/DirectVulkan/Renderer/VulkanRenderer.h"
#include <GLFW/glfw3native.h>
#ifdef __APPLE__
@@ -30,6 +36,10 @@
#include <objc/runtime.h>
#endif
namespace MobileGL {
void MG_Initialize();
}
int main() {
glfwInit();
@@ -75,6 +85,16 @@ int main() {
MobileGL::MG_Initialize();
GLuint vao = 0;
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
static constexpr GLushort kTriangleIndices[] = {0, 1, 2};
GLuint ebo = 0;
glGenBuffers(1, &ebo);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(kTriangleIndices), kTriangleIndices, GL_STATIC_DRAW);
int i = 0;
while(!glfwWindowShouldClose(window)) {
glfwPollEvents();
@@ -85,7 +105,7 @@ int main() {
glClearColor(0.0f, 1.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
if (i % 500 > 250)
glDrawArrays(GL_TRIANGLES, 0, 3);
glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_SHORT, nullptr);
eglSwapBuffers(display, surface);
++i;
}