working with shaders
This commit is contained in:
parent
a4d2b732aa
commit
946c5d784b
16
Game.cpp
16
Game.cpp
@ -37,15 +37,16 @@ void Game::setup() {
|
|||||||
std::cout << "Hello 1" << std::endl;
|
std::cout << "Hello 1" << std::endl;
|
||||||
|
|
||||||
// Initialize renderer
|
// Initialize renderer
|
||||||
/*
|
|
||||||
renderer.shaderManager.AddShaderFromFiles("default", "./default.vertex", "./default.fragment");
|
renderer.shaderManager.AddShaderFromFiles("default", "./default.vertex", "./default.fragment");
|
||||||
renderer.shaderManager.AddShaderFromFiles("defaultColor", "./defaultColor.vertex", "./defaultColor.fragment");
|
std::cout << "Hello 1.5" << std::endl;
|
||||||
renderer.shaderManager.AddShaderFromFiles("defaultHideCam", "./defaultHideCam.vertex", "./defaultHideCam.fragment");
|
// renderer.shaderManager.AddShaderFromFiles("defaultColor", "./defaultColor.vertex", "./defaultColor.fragment");
|
||||||
*/
|
// renderer.shaderManager.AddShaderFromFiles("defaultHideCam", "./defaultHideCam.vertex", "./defaultHideCam.fragment");
|
||||||
|
|
||||||
// Initialize game objects
|
// Initialize game objects
|
||||||
std::cout << "Hello 2" << std::endl;
|
std::cout << "Hello 2" << std::endl;
|
||||||
|
|
||||||
// gameObjects.initialize();
|
gameObjects.initialize();
|
||||||
|
|
||||||
std::cout << "Hello 3" << std::endl;
|
std::cout << "Hello 3" << std::endl;
|
||||||
|
|
||||||
@ -60,7 +61,6 @@ void Game::drawScene() {
|
|||||||
|
|
||||||
void Game::processTickCount() {
|
void Game::processTickCount() {
|
||||||
|
|
||||||
#if 0
|
|
||||||
if (Environment::finalIsGood)
|
if (Environment::finalIsGood)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -101,7 +101,6 @@ void Game::processTickCount() {
|
|||||||
|
|
||||||
lastTickCount = newTickCount;
|
lastTickCount = newTickCount;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Game::render() {
|
void Game::render() {
|
||||||
@ -111,7 +110,7 @@ void Game::render() {
|
|||||||
glClearColor(0.0f, 1.0f, 0.0f, 1.0f);
|
glClearColor(0.0f, 1.0f, 0.0f, 1.0f);
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
|
||||||
// drawScene();
|
drawScene();
|
||||||
processTickCount();
|
processTickCount();
|
||||||
|
|
||||||
SDL_GL_SwapWindow(ZL::Environment::window);
|
SDL_GL_SwapWindow(ZL::Environment::window);
|
||||||
@ -119,7 +118,6 @@ void Game::render() {
|
|||||||
|
|
||||||
void Game::update() {
|
void Game::update() {
|
||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
std::cout << "HEE" << std::endl;
|
|
||||||
while (SDL_PollEvent(&event)) {
|
while (SDL_PollEvent(&event)) {
|
||||||
if (event.type == SDL_QUIT) {
|
if (event.type == SDL_QUIT) {
|
||||||
if (gameObjects.loadingThread.joinable())
|
if (gameObjects.loadingThread.joinable())
|
||||||
|
|||||||
@ -16,8 +16,9 @@ const float GameObjectManager::SELECTED_CUBE_ICON_SIZE = 244.0f;
|
|||||||
const float GameObjectManager::SELECTED_CUBE_MARGIN = 50.0f;
|
const float GameObjectManager::SELECTED_CUBE_MARGIN = 50.0f;
|
||||||
|
|
||||||
void GameObjectManager::initializeLoadingScreen()
|
void GameObjectManager::initializeLoadingScreen()
|
||||||
{
|
{
|
||||||
loadingScreenTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp24("./loading.bmp"));
|
loadingScreenTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp24("./loading.bmp"));
|
||||||
|
|
||||||
loadingScreenMesh = CreateRect2D(
|
loadingScreenMesh = CreateRect2D(
|
||||||
{ Environment::width / 2.f, Environment::height / 2.f },
|
{ Environment::width / 2.f, Environment::height / 2.f },
|
||||||
{ Environment::width / 2.f, Environment::height / 2.f },
|
{ Environment::width / 2.f, Environment::height / 2.f },
|
||||||
@ -28,15 +29,17 @@ void GameObjectManager::initializeLoadingScreen()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void GameObjectManager::initialize() {
|
void GameObjectManager::initialize() {
|
||||||
|
|
||||||
initializeLoadingScreen();
|
initializeLoadingScreen();
|
||||||
|
|
||||||
std::function<bool()> loadingFunction1 = [this]()
|
std::function<bool()> loadingFunction1 = [this]()
|
||||||
{
|
{
|
||||||
|
|
||||||
current_room_index = 0;
|
current_room_index = 0;
|
||||||
objects_in_inventory = 0;
|
objects_in_inventory = 0;
|
||||||
bearName = "";
|
bearName = "";
|
||||||
current_room_index = 0;
|
current_room_index = 0;
|
||||||
objects_in_inventory = 0;
|
objects_in_inventory = 0;
|
||||||
|
|
||||||
//coneTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp24("./conus.bmp"));
|
//coneTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp24("./conus.bmp"));
|
||||||
|
|
||||||
@ -51,7 +54,7 @@ void GameObjectManager::initialize() {
|
|||||||
|
|
||||||
|
|
||||||
loadingThread = std::thread([this]() {
|
loadingThread = std::thread([this]() {
|
||||||
/*
|
|
||||||
preloadedRoomMeshArr.resize(3);
|
preloadedRoomMeshArr.resize(3);
|
||||||
preloadedRoomMeshArr[0] = ZL::LoadFromTextFile("./oneroom001.txt");
|
preloadedRoomMeshArr[0] = ZL::LoadFromTextFile("./oneroom001.txt");
|
||||||
preloadedRoomMeshArr[0].Scale(10);
|
preloadedRoomMeshArr[0].Scale(10);
|
||||||
@ -71,17 +74,17 @@ void GameObjectManager::initialize() {
|
|||||||
|
|
||||||
violaIdleModel.LoadFromFile("./idleviola_uv010.txt");
|
violaIdleModel.LoadFromFile("./idleviola_uv010.txt");
|
||||||
violaWalkModel.LoadFromFile("./walkviola_uv010.txt");
|
violaWalkModel.LoadFromFile("./walkviola_uv010.txt");
|
||||||
sideThreadLoadingCompleted = true;*/
|
sideThreadLoadingCompleted = true;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
std::function<bool()> loadingFunction2 = [this]()
|
std::function<bool()> loadingFunction2 = [this]()
|
||||||
{
|
{
|
||||||
return sideThreadLoadingCompleted;
|
return sideThreadLoadingCompleted;
|
||||||
};
|
};
|
||||||
|
|
||||||
std::function<bool()> loadingFunction3 = [this]()
|
std::function<bool()> loadingFunction3 = [this]()
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
// Create active object
|
// Create active object
|
||||||
ActiveObject cubeForFirstRoomT;
|
ActiveObject cubeForFirstRoomT;
|
||||||
cubeForFirstRoomT.name = "cube_T";
|
cubeForFirstRoomT.name = "cube_T";
|
||||||
@ -252,14 +255,13 @@ void GameObjectManager::initialize() {
|
|||||||
rooms.push_back(room_3);
|
rooms.push_back(room_3);
|
||||||
|
|
||||||
activeObjects = rooms[current_room_index].objects;
|
activeObjects = rooms[current_room_index].objects;
|
||||||
*/
|
|
||||||
// Initialize audio
|
// Initialize audio
|
||||||
/*
|
/*
|
||||||
audioPlayer = std::make_unique<AudioPlayer>();
|
audioPlayer = std::make_unique<AudioPlayer>();
|
||||||
if (audioPlayer) {
|
if (audioPlayer) {
|
||||||
audioPlayer->playMusic(rooms[current_room_index].sound_name);
|
audioPlayer->playMusic(rooms[current_room_index].sound_name);
|
||||||
}*/
|
}*/
|
||||||
/*
|
|
||||||
#ifdef AUDIO
|
#ifdef AUDIO
|
||||||
audioPlayerAsync.resetAsync();
|
audioPlayerAsync.resetAsync();
|
||||||
audioPlayerAsync.playMusicAsync(rooms[current_room_index].sound_name);
|
audioPlayerAsync.playMusicAsync(rooms[current_room_index].sound_name);
|
||||||
@ -303,15 +305,14 @@ void GameObjectManager::initialize() {
|
|||||||
//SDL_ShowCursor(SDL_DISABLE);
|
//SDL_ShowCursor(SDL_DISABLE);
|
||||||
SDL_SetRelativeMouseMode(SDL_TRUE);
|
SDL_SetRelativeMouseMode(SDL_TRUE);
|
||||||
|
|
||||||
*/
|
|
||||||
std::cout << "Hi2" << std::endl;
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//loadingFunctions.push_back(loadingFunction1);
|
loadingFunctions.push_back(loadingFunction1);
|
||||||
//loadingFunctions.push_back(loadingFunction2);
|
loadingFunctions.push_back(loadingFunction2);
|
||||||
//loadingFunctions.push_back(loadingFunction3);
|
loadingFunctions.push_back(loadingFunction3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GameObjectManager::switch_room(int index){
|
void GameObjectManager::switch_room(int index){
|
||||||
@ -712,9 +713,6 @@ void GameObjectManager::handleEvent(const SDL_Event& event) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void GameObjectManager::updateScene(size_t ms) {
|
void GameObjectManager::updateScene(size_t ms) {
|
||||||
|
|
||||||
#if 0
|
|
||||||
|
|
||||||
const float SPEED = 0.1f;
|
const float SPEED = 0.1f;
|
||||||
|
|
||||||
Vector2f directionVector = { 0.f, SPEED }; // x and z
|
Vector2f directionVector = { 0.f, SPEED }; // x and z
|
||||||
@ -865,8 +863,6 @@ void GameObjectManager::updateScene(size_t ms) {
|
|||||||
|
|
||||||
//float Environment::monsterTimer = 0.0;
|
//float Environment::monsterTimer = 0.0;
|
||||||
//int Environment::monsterState = 1;
|
//int Environment::monsterState = 1;
|
||||||
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GameObjectManager::isPointInObject(int screenX, int screenY, int objectScreenX, int objectScreenY) const {
|
bool GameObjectManager::isPointInObject(int screenX, int screenY, int objectScreenX, int objectScreenY) const {
|
||||||
@ -911,4 +907,4 @@ void GameObjectManager::worldToScreenCoordinates(Vector3f objectPos,
|
|||||||
screenY = (int)((1.0f + ndcY) * 0.5f * screenHeight);
|
screenY = (int)((1.0f + ndcY) * 0.5f * screenHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace ZL
|
} // namespace ZL
|
||||||
@ -4,7 +4,7 @@
|
|||||||
#include "Inventory.h"
|
#include "Inventory.h"
|
||||||
#include <GL/gl.h>
|
#include <GL/gl.h>
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
namespace ZL {
|
namespace ZL {
|
||||||
|
|
||||||
@ -26,7 +26,6 @@ void RenderSystem::drawScene(GameObjectManager& gameObjects) {
|
|||||||
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
|
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
|
||||||
|
|
||||||
glViewport(0, 0, Environment::width, Environment::height);
|
glViewport(0, 0, Environment::width, Environment::height);
|
||||||
|
|
||||||
if (Environment::gameIsLoading)
|
if (Environment::gameIsLoading)
|
||||||
{
|
{
|
||||||
drawLoadingScreen(gameObjects);
|
drawLoadingScreen(gameObjects);
|
||||||
@ -42,6 +41,7 @@ void RenderSystem::drawScene(GameObjectManager& gameObjects) {
|
|||||||
glClear(GL_DEPTH_BUFFER_BIT);
|
glClear(GL_DEPTH_BUFFER_BIT);
|
||||||
drawUI(gameObjects);
|
drawUI(gameObjects);
|
||||||
}
|
}
|
||||||
|
|
||||||
CheckGlError();
|
CheckGlError();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,8 @@
|
|||||||
namespace ZL {
|
namespace ZL {
|
||||||
|
|
||||||
ShaderResource::ShaderResource(const std::string& vertexCode, const std::string& fragmentCode)
|
ShaderResource::ShaderResource(const std::string& vertexCode, const std::string& fragmentCode)
|
||||||
{
|
{
|
||||||
|
|
||||||
const int CONST_INFOLOG_LENGTH = 256;
|
const int CONST_INFOLOG_LENGTH = 256;
|
||||||
|
|
||||||
char infoLog[CONST_INFOLOG_LENGTH];
|
char infoLog[CONST_INFOLOG_LENGTH];
|
||||||
@ -38,14 +39,13 @@ namespace ZL {
|
|||||||
glGetShaderiv(fragmentShader, GL_COMPILE_STATUS, &fragmentShaderCompiled);
|
glGetShaderiv(fragmentShader, GL_COMPILE_STATUS, &fragmentShaderCompiled);
|
||||||
glGetShaderInfoLog(fragmentShader, CONST_INFOLOG_LENGTH, &infoLogLength, infoLog);
|
glGetShaderInfoLog(fragmentShader, CONST_INFOLOG_LENGTH, &infoLogLength, infoLog);
|
||||||
|
|
||||||
|
|
||||||
if (!vertexShaderCompiled)
|
if (!vertexShaderCompiled)
|
||||||
{
|
{
|
||||||
throw std::runtime_error("Failed to compile vertex shader code!");
|
throw std::runtime_error("Failed to compile vertex shader code!");
|
||||||
}
|
}
|
||||||
|
std::cout << "IM here" << std::endl;
|
||||||
if (!fragmentShaderCompiled)
|
if (!fragmentShaderCompiled)
|
||||||
{
|
{
|
||||||
throw std::runtime_error("Failed to compile fragment shader code!");
|
throw std::runtime_error("Failed to compile fragment shader code!");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -142,7 +142,6 @@ namespace ZL {
|
|||||||
vertexShader = readTextFile(vertexShaderFileName);
|
vertexShader = readTextFile(vertexShaderFileName);
|
||||||
fragmentShader = readTextFile(fragmentShaderFileName);
|
fragmentShader = readTextFile(fragmentShaderFileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
///std::cout << "Shader: "<< vertexShader << std::endl;
|
///std::cout << "Shader: "<< vertexShader << std::endl;
|
||||||
shaderResourceMap[shaderName] = std::make_shared<ShaderResource>(vertexShader, fragmentShader);
|
shaderResourceMap[shaderName] = std::make_shared<ShaderResource>(vertexShader, fragmentShader);
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
jumpingbird.data
BIN
jumpingbird.data
Binary file not shown.
|
Before Width: | Height: | Size: 2.3 MiB After Width: | Height: | Size: 2.3 MiB |
File diff suppressed because one or more lines are too long
BIN
jumpingbird.wasm
BIN
jumpingbird.wasm
Binary file not shown.
32
main.cpp
32
main.cpp
@ -13,10 +13,34 @@ int main(int argc, char* argv[]) {
|
|||||||
|
|
||||||
|
|
||||||
#ifdef EMSCRIPTEN
|
#ifdef EMSCRIPTEN
|
||||||
SDL_Init(SDL_INIT_VIDEO);
|
if (SDL_Init(SDL_INIT_VIDEO) != 0) {
|
||||||
SDL_Window* win = nullptr;
|
std::cerr << "SDL_Init failed: " << SDL_GetError() << std::endl;
|
||||||
SDL_Renderer* ren = nullptr;
|
return 1;
|
||||||
SDL_CreateWindowAndRenderer(CONST_WIDTH, CONST_HEIGHT, SDL_WINDOW_OPENGL, &win, &ren);
|
}
|
||||||
|
|
||||||
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2);
|
||||||
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0);
|
||||||
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES);
|
||||||
|
|
||||||
|
SDL_Window* win = SDL_CreateWindow("Jumping Bird",
|
||||||
|
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
|
||||||
|
CONST_WIDTH, CONST_HEIGHT,
|
||||||
|
SDL_WINDOW_OPENGL);
|
||||||
|
|
||||||
|
if (!win) {
|
||||||
|
std::cerr << "SDL_CreateWindow failed: " << SDL_GetError() << std::endl;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
SDL_GLContext glContext = SDL_GL_CreateContext(win);
|
||||||
|
if (!glContext) {
|
||||||
|
std::cerr << "SDL_GL_CreateContext failed: " << SDL_GetError() << std::endl;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Привязка контекста к окну — важно!
|
||||||
|
SDL_GL_MakeCurrent(win, glContext);
|
||||||
|
|
||||||
ZL::Environment::window = win;
|
ZL::Environment::window = win;
|
||||||
#else
|
#else
|
||||||
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTS) != 0) {
|
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTS) != 0) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user