🔧 AI Nachrichten ChatGPT showing blank screen [Fix](05.09.2026 um 19:55 Uhr)
⚠️ Malware / Trojaner / VirenSofort deinstallieren: Diese 19 Browser-Erweiterungen sind mit Malware verseucht(06.09.2026 um 08:00 Uhr)
⚠️ Malware / Trojaner / VirenLumma Stealer – dllhost.exe Hollowing, C2 Domains & Payload Extraction(01.09.2026 um 17:19 Uhr)
🔧 AI Nachrichten Simcha Kosman AMA: Owning ChatGPT's Secure Sandbox(03.09.2026 um 07:41 Uhr)
⚠️ Malware / Trojaner / VirenThe Gentlemen Ransomware Analysis: Go Obfuscated(04.09.2026 um 12:05 Uhr)
🕵️ SicherheitslückenSecurity Vulnerability in a Voting System(04.09.2026 um 13:09 Uhr)
🕵️ SicherheitslückenHow an Integer Overflow Vulnerability Let Me Buy Anything for ₹0(04.09.2026 um 05:04 Uhr)
🕵️ SicherheitslückenHow I Turned Self-XSS into Reflected XSS (and Bypassed the WAF)(04.09.2026 um 05:09 Uhr)
🔧 AI Nachrichten ChatGPT showing blank screen [Fix](05.09.2026 um 19:55 Uhr)
⚠️ Malware / Trojaner / VirenSofort deinstallieren: Diese 19 Browser-Erweiterungen sind mit Malware verseucht(06.09.2026 um 08:00 Uhr)
⚠️ Malware / Trojaner / VirenLumma Stealer – dllhost.exe Hollowing, C2 Domains & Payload Extraction(01.09.2026 um 17:19 Uhr)
🔧 AI Nachrichten Simcha Kosman AMA: Owning ChatGPT's Secure Sandbox(03.09.2026 um 07:41 Uhr)
⚠️ Malware / Trojaner / VirenThe Gentlemen Ransomware Analysis: Go Obfuscated(04.09.2026 um 12:05 Uhr)
🕵️ SicherheitslückenSecurity Vulnerability in a Voting System(04.09.2026 um 13:09 Uhr)
🕵️ SicherheitslückenHow an Integer Overflow Vulnerability Let Me Buy Anything for ₹0(04.09.2026 um 05:04 Uhr)
🕵️ SicherheitslückenHow I Turned Self-XSS into Reflected XSS (and Bypassed the WAF)(04.09.2026 um 05:09 Uhr)

🔧 Programmierung 🕛 kürzlich 7 Min Lesezeit
0

Part1 Vulkan: Drawing Triangle 1

↗ Quelle (dev.to)
🗣️ Stimme:

This is not a guide, just me writing down my notes

This fallows the Vulkan Tutorial link



Some details I learned along the way



1.Base Code section




  • This is more related with Cpp than Vulkan but I'm just gonna write it as a reminder to myself. Members in cpp or oop means the components in the class which are (filed/variable) and (method/function)


  • When objects are created it uses vkCreateXXX or allocate using vkAllocateXXX. However when these objects are no longer needed, these are destroyed using vkDestroyXXX and vkFreeXXX


  • pAllocator. This is an optional parameter that allows you to specify callbacks for a custom memory allocator. We will ignore this parameter in the tutorial and always pass nullptr as argument.(cause we are beginners)




2.Instance section




  • Instance is the connection between "Your Application" and "The Vulkan Library". Also it initializes the Vulkan Library


  • VkApplicationInfo --> this just specify application information. This code is not really required but it provides some useful info to dirver.




CODE
//not really required but still provide the info needed for the dirver.
void createInstance() {
VkApplicationInfo appInfo{};
appInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
appInfo.pApplicationName = "Hello Triangle";
appInfo.applicationVersion = VK_MAKE_VERSION(1, 0, 0);
appInfo.pEngineName = "No Engine";
appInfo.engineVersion = VK_MAKE_VERSION(1, 0, 0);
appInfo.apiVersion = VK_API_VERSION_1_0;
}






  • VkInstanceCreateInfo --> this is not optional and tells the Vulkan driver which global extensions and validation layers we want to use. You don't have to know what global extension and validation layers are because they will be mentioned in next chapter.



CODE
//this creates the info full detail is in the end of the code.
//for now don't think to much about this.

VkInstanceCreateInfo createInfo{};
createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
createInfo.pApplicationInfo = &appInfo;





-vkCreateInstance --> now the important part! we are going to store the "createInfo" inside the "vkInstance instance variable". Not complicated!!




CODE
//What is "nullptr" inside the second parameter???
//that is the callback which we will not use cause... I mentioned this before
VkResult result = vkCreateInstance(&createInfo, nullptr, &instance);







  • vkEnumerateInstanceExtensionProperties --> this just retrieves the supported extension before actually creating an instance(not really required but cool to have/checks which support is missing)




CODE
    uint32_t extensionCount = 0;
//you can just think of this like an array
//where inside the extensions vector the information about supported extensions will be stored annnnd
//it could be accesed by using index named extension count
std::vector<VkExtensionProperties> extensions(extensionCount);
//this like mentioned above the actual supported extensions details will bbe stored in extensions vector
//------explaination of the code-------
//vkEnumerateInstanceExtensionProperties(the callback which we will not be using, the address of "number of extensions", the actual vector data);
vkEnumerateInstanceExtensionProperties(nullptr, &extensionCount, extensions.data());

//now actually printing
std::cout << "available extensions:\n";
//this is not realted with vulkan but still gonna write it down
//(const auto& extension : extensions)
// ":" --> bring the first value in extensions vecotr and put it inside extension variable
// auto --> let computer choose what data type will the extension be
// & point to the actual value of extension variable do not make a copy of extension varaible
for (const auto& extension : extensions) {
std::cout << '\t' << extension.extensionName << '\n';
}






The Full Code




CODE
#include <vector>
#define GLFW_INCLUDE_VULKAN
#include
<GLFW/glfw3.h>
//the vulkan header has been replaced becuase the GLFW will call it automatically
#include <iostream>
#include
<cstdlib>

//this is a constant definition
//uint32_t is 32bit integer
const uint32_t WIDTH = 800;
const uint32_t HEIGHT = 600;

class HelloTriangleApplication {
public:
void run() {
//add this method initWindow() to run
initWindow();
initVulkan();
mainLoop();
cleanup();
}

private:
//write a private member that creates the actual window
GLFWwindow* window;
//a private member that hold the instance
VkInstance instance;

void initWindow(){
//the very first call is glfwInit();
//why?? you may ask because we have to tell the glfw it is not an OpenGL and should tell glfw to NOT create OpenGL Context
glfwInit();
//not sure what these 2 does
glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE);
//this as you know creates an actual window
//detail of this line
//window = glfwCreateWindow(the width, the height, the title, which monitor to open the window, this is only relevent to OpenGL);
window = glfwCreateWindow(WIDTH, HEIGHT, "Vulkan", nullptr, nullptr);
}

void initVulkan() {
//a self made function that creates an instance
createInstance();
}

void mainLoop() {
//run the application untill the window is closed or an error occurs
while (!glfwWindowShouldClose(window)) {
glfwPollEvents();
}
}
//we need to clean up resources
void cleanup() {
//destroyes the instance
vkDestroyInstance(instance, nullptr );
//this destroyes the window
glfwDestroyWindow(window);

glfwTerminate();
}

void createInstance() {
//VkApplicationInfo-Structure specifiying application information
//this whole code is kind of optional but it provieds some useful information to the driver
VkApplicationInfo appInfo{};
appInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
appInfo.pApplicationName = "Hello Triangle";
appInfo.applicationVersion = VK_MAKE_VERSION(1, 0, 0);
appInfo.pEngineName = "No Engine";
appInfo.engineVersion = VK_MAKE_VERSION(1, 0, 0);
appInfo.apiVersion = VK_API_VERSION_1_0;

//the code below is not optional and tells the Vulkan driver which global extensions and validation layers we want to use.
//You don't have to know what global extension and validation layers are
//because they will be mentioned in next chapter

VkInstanceCreateInfo createInfo{};
createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
createInfo.pApplicationInfo = &appInfo;

//---------EXTENSION PART---------

//how many extension do we need??
uint32_t glfwExtensionCount = 0;
//a storage for extension names
const char** glfwExtensions;

//this basically fills in two variable we mentioned
//1. glfwExtensions
//2. glfwExtensionCount
//Asks GLFW: "How many extensions do we need??? and which one??"
glfwExtensions = glfwGetRequiredInstanceExtensions(&glfwExtensionCount);

//we put the "count" and the "name tag" inside the VkInstanceCreateInfo createInfo we mentioned earlier
createInfo.enabledExtensionCount = glfwExtensionCount;
createInfo.ppEnabledExtensionNames = glfwExtensions;

//we are not touching this for now
createInfo.enabledLayerCount = 0;

//this is like giving information "Which stuff I am going to use to make Vulkan Project!!!"
//1.the first parameter is the pointer to the createInfo. See the code we have been putting information about "Extensions" in the createInfo.
//2.the second paramter is the callback which we don't have to know cause it will always stay nullptr.
//3.remember the "Vkinstance instance;" we mentioned earlier outside private and public??? we are going to put the created instance inside that variable.
VkResult result = vkCreateInstance(&createInfo, nullptr, &instance);

//the error checker
if (vkCreateInstance(&createInfo, nullptr, &instance) != VK_SUCCESS) {
throw std::runtime_error("failed to create instance!");
}

uint32_t extensionCount = 0;
//you can just think of this like an array
//where inside the extensions vector the information about supported extensions will be stored annnnd
//it could be accesed by using index named extension count
std::vector<VkExtensionProperties> extensions(extensionCount);
//this like mentioned above the actual supported extensions details will bbe stored in extensions vector
//------explaination of the code-------
//vkEnumerateInstanceExtensionProperties(the callback which we will not be using, the address of "number of extensions", the actual vector data);
vkEnumerateInstanceExtensionProperties(nullptr, &extensionCount, extensions.data());

//now actually printing
std::cout << "available extensions:\n";
//this is not realted with vulkan but still gonna write it down
//(const auto& extension : extensions)
// ":" --> bring the first value in extensions vecotr and put it inside extension variable
// auto --> let computer choose what data type will the extension be
// & point to the actual value of extension variable do not make a copy of extension varaible
for (const auto& extension : extensions) {
std::cout << '\t' << extension.extensionName << '\n';
}
}
};

int main() {
HelloTriangleApplication app;

try {
app.run();
} catch (const std::exception& e) {
std::cerr << e.what() << std::endl;
return EXIT_FAILURE;
}

return EXIT_SUCCESS;
}







part2 not here yet

Vollständiger Original-Bericht
Ausführliche Details, Code-Beispiele & Hersteller-Stellungnahme auf dev.to.
↗ Original-Artikel auf dev.to lesen
Wie bewertest du diesen Beitrag?
1 Klick Feedback
Teilen mit Netzwerk & Team:

Community-Analysen & Experten-Meinungen 0

Verfasse deine eigene Analyse, teile Workarounds oder diskutiere diesen Vorfall im Blog.
Noch keine Community-Analyse verfasst. Markiere einen Textabschnitt oder klicke oben auf Eigene Analyse verfassen“!
Community Pulse: Relevanz-Einschätzung
1 Klick Experten-Votum
🔴 Akute Relevanz 51%
🟡 In Evaluierung 29%
🟢 Keine Auswirkung 15%
Spannende Innovation 4%
Verwandte Story-Cluster & Quellen (Vektor-KI)
Port 8095 Engine
1 Quelle
ChatGPT showing blank screen [Fix]
1 Quelle
Sofort deinstallieren: Diese 19 Browser-Erweiterungen sind mit Malware verseucht
1 Quelle
Exchange-Sicherheit: 21.899 Server weltweit für kritische RCE anfällig - BornCity
Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten Part1 Vulkan: Drawing Triangle 1

Thematisch verwandte Begriffe: Part1, Vulkan, Drawing, Triangle · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...