window icon

This commit is contained in:
tylermurphy534 2022-09-26 21:24:28 -04:00
parent 5a08c9c8e2
commit bc2a2d08c9
6 changed files with 17 additions and 6 deletions

View file

@ -8,7 +8,7 @@ Engine* Engine::getInstance() {
return _instance; return _instance;
} }
Engine::Engine(int width, int height, std::string name) : xeWindow{width, height, name}, Engine::Engine(int width, int height, std::string name, const char *icon) : xeWindow{width, height, name, icon},
xeDevice{xeWindow}, xeDevice{xeWindow},
xeRenderer{xeWindow, xeDevice}, xeRenderer{xeWindow, xeDevice},
xeCamera{}, xeCamera{},

View file

@ -20,7 +20,7 @@ class Engine {
public: public:
Engine(int width, int height, std::string name); Engine(int width, int height, std::string name, const char *icon);
~Engine(); ~Engine();

View file

@ -1,9 +1,11 @@
#include "xe_window.hpp" #include "xe_window.hpp"
#include "stb_image.h"
namespace xe { namespace xe {
Window::Window(int w, int h, std::string name) : width{w}, height{h}, windowName{name} { Window::Window(int w, int h, std::string name, const char *icon) : width{w}, height{h}, windowName{name} {
initWindow(); initWindow();
setIcon(icon);
} }
Window::~Window() { Window::~Window() {
@ -21,6 +23,14 @@ namespace xe {
glfwSetFramebufferSizeCallback(window, framebufferResizeCallback); glfwSetFramebufferSizeCallback(window, framebufferResizeCallback);
} }
void Window::setIcon(const char *icon) {
if(icon == NULL) return;
GLFWimage images[1];
images[0].pixels = stbi_load(icon, &images[0].width, &images[0].height, 0, 4); //rgba channels
glfwSetWindowIcon(window, 1, images);
stbi_image_free(images[0].pixels);
}
void Window::createWindowSurface(VkInstance instance, VkSurfaceKHR *surface){ void Window::createWindowSurface(VkInstance instance, VkSurfaceKHR *surface){
if (glfwCreateWindowSurface(instance, window, nullptr, surface) != VK_SUCCESS) { if (glfwCreateWindowSurface(instance, window, nullptr, surface) != VK_SUCCESS) {
throw std::runtime_error("failed to create window surface"); throw std::runtime_error("failed to create window surface");

View file

@ -12,7 +12,7 @@ namespace xe {
class Window { class Window {
public: public:
Window(int w, int h, std::string name); Window(int w, int h, std::string name, const char *icon);
~Window(); ~Window();
Window(const Window &) = delete; Window(const Window &) = delete;
@ -29,6 +29,7 @@ class Window {
private: private:
static void framebufferResizeCallback(GLFWwindow *window, int width, int height); static void framebufferResizeCallback(GLFWwindow *window, int width, int height);
void initWindow(); void initWindow();
void setIcon(const char *icon);
int width; int width;
int height; int height;

BIN
res/image/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

View file

@ -3,7 +3,7 @@
namespace app { namespace app {
FirstApp::FirstApp() : xeEngine{WIDTH, HEIGHT, "Xenon Vulkan Engine"} {}; FirstApp::FirstApp() : xeEngine{WIDTH, HEIGHT, "Minecraft Vulkan", "res/image/icon.png"} {};
FirstApp::~FirstApp() {} FirstApp::~FirstApp() {}
@ -20,7 +20,7 @@ void FirstApp::run() {
sound.play(); sound.play();
auto viewerObject = xe::GameObject::createGameObject(); auto viewerObject = xe::GameObject::createGameObject();
viewerObject.transform.translation = {-7.f, 3.f, -7.f}; viewerObject.transform.translation = {0.f, 10.f, 0.f};
viewerObject.transform.rotation.y = glm::radians(45.f); viewerObject.transform.rotation.y = glm::radians(45.f);
KeyboardMovementController cameraController{xeEngine.getInput(), viewerObject}; KeyboardMovementController cameraController{xeEngine.getInput(), viewerObject};