refactor: 重构项目结构和资源管理
- 将主程序代码和资源文件移动到Game目录下 - 更新构建脚本以适配新的目录结构 - 重构应用初始化流程,移除冗余代码 - 更新着色器文件路径和资源管理逻辑 - 删除废弃的windows.lua构建脚本 - 优化Switch平台构建配置
This commit is contained in:
46
Game/assets/icons/README.md
Normal file
46
Game/assets/icons/README.md
Normal file
@@ -0,0 +1,46 @@
|
||||
# Icon Setup Guide
|
||||
|
||||
## Window Icon (运行时窗口图标)
|
||||
|
||||
### Windows/Linux
|
||||
- Place `icon.bmp` (32x32 or larger) in `assets/icons/`
|
||||
- Set in code: `config.windowConfig.icon = Icon("assets/icons/icon.bmp");`
|
||||
|
||||
### Switch
|
||||
- Place `icon.jpg` (256x256 JPEG) in `assets/icons/icon.jpg`
|
||||
- Automatically included in NRO build process
|
||||
|
||||
## Application Icon (程序文件图标)
|
||||
|
||||
### Windows (.exe 图标)
|
||||
需要创建 `.ico` 文件并放置在 `assets/icons/app.ico`
|
||||
|
||||
#### 创建 .ico 文件的方法:
|
||||
|
||||
**方法 1: 使用在线工具**
|
||||
1. 访问 https://icoconvert.com/
|
||||
2. 上传 PNG/JPG 图标(推荐 256x256)
|
||||
3.将下载的 .ico 文件保存到 `assets/icons/app.ico`
|
||||
|
||||
**方法 2: 使用 GIMP**
|
||||
1. 打开图像
|
||||
2. 调整为 256x256
|
||||
3. 文件 → 导出为 → `app.ico`
|
||||
4. 保存到 `assets/icons/app.ico`
|
||||
|
||||
**方法 3: 使用 ImageMagick**
|
||||
```bash
|
||||
convert icon.png -define icon:auto-resize=256,128,96,64,48,32,16 app.ico
|
||||
```
|
||||
|
||||
#### Linux (.desktop 图标)
|
||||
- 将图标复制到 `/usr/share/icons/hicolor/256x256/apps/yourapp.png`
|
||||
- 创建 `.desktop` 文件指定 Icon 字段
|
||||
|
||||
## Usage Example
|
||||
```cpp
|
||||
AppConfig config = AppConfig::createDefault();
|
||||
config.windowConfig.icon = Icon("assets/icons/icon.bmp");
|
||||
Application& app = Application::get();
|
||||
app.init(config);
|
||||
```
|
||||
BIN
Game/assets/icons/app.ico
Normal file
BIN
Game/assets/icons/app.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
BIN
Game/assets/icons/icon.bmp
Normal file
BIN
Game/assets/icons/icon.bmp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
9
Game/shaders/colored_quad.frag
Normal file
9
Game/shaders/colored_quad.frag
Normal file
@@ -0,0 +1,9 @@
|
||||
#ifdef GL_ES
|
||||
precision mediump float;
|
||||
#endif
|
||||
|
||||
varying vec4 v_color;
|
||||
|
||||
void main() {
|
||||
gl_FragColor = v_color;
|
||||
}
|
||||
19
Game/shaders/colored_quad.vert
Normal file
19
Game/shaders/colored_quad.vert
Normal file
@@ -0,0 +1,19 @@
|
||||
#ifdef GL_ES
|
||||
precision mediump float;
|
||||
#endif
|
||||
|
||||
attribute vec2 a_position;
|
||||
attribute vec2 a_texCoord;
|
||||
attribute vec4 a_color;
|
||||
|
||||
uniform mat4 u_view;
|
||||
uniform mat4 u_projection;
|
||||
|
||||
varying vec2 v_texCoord;
|
||||
varying vec4 v_color;
|
||||
|
||||
void main() {
|
||||
gl_Position = u_projection * u_view * vec4(a_position, 0.0, 1.0);
|
||||
v_texCoord = a_texCoord;
|
||||
v_color = a_color;
|
||||
}
|
||||
13
Game/shaders/sprite.frag
Normal file
13
Game/shaders/sprite.frag
Normal file
@@ -0,0 +1,13 @@
|
||||
#ifdef GL_ES
|
||||
precision mediump float;
|
||||
#endif
|
||||
|
||||
varying vec2 v_texCoord;
|
||||
varying vec4 v_color;
|
||||
|
||||
uniform sampler2D u_texture;
|
||||
|
||||
void main() {
|
||||
vec4 texColor = texture2D(u_texture, v_texCoord);
|
||||
gl_FragColor = texColor * v_color;
|
||||
}
|
||||
20
Game/shaders/sprite.vert
Normal file
20
Game/shaders/sprite.vert
Normal file
@@ -0,0 +1,20 @@
|
||||
#ifdef GL_ES
|
||||
precision mediump float;
|
||||
#endif
|
||||
|
||||
attribute vec2 a_position;
|
||||
attribute vec2 a_texCoord;
|
||||
attribute vec4 a_color;
|
||||
|
||||
uniform mat4 u_view;
|
||||
uniform mat4 u_projection;
|
||||
uniform sampler2D u_texture;
|
||||
|
||||
varying vec2 v_texCoord;
|
||||
varying vec4 v_color;
|
||||
|
||||
void main() {
|
||||
gl_Position = u_projection * u_view * vec4(a_position, 0.0, 1.0);
|
||||
v_texCoord = a_texCoord;
|
||||
v_color = a_color;
|
||||
}
|
||||
34
Game/src/main.cpp
Normal file
34
Game/src/main.cpp
Normal file
@@ -0,0 +1,34 @@
|
||||
#include "SDL_log.h"
|
||||
#include <SDL2/SDL.h>
|
||||
#include <frostbite2D/core/application.h>
|
||||
#include <frostbite2D/core/window.h>
|
||||
#include <frostbite2D/graphics/renderer.h>
|
||||
#include <frostbite2D/graphics/texture.h>
|
||||
#include <glad/glad.h>
|
||||
|
||||
using namespace frostbite2D;
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
AppConfig config = AppConfig::createDefault();
|
||||
config.appName = "Frostbite2D Test App";
|
||||
config.appVersion = "1.0.0";
|
||||
config.windowConfig.width = 800;
|
||||
config.windowConfig.height = 600;
|
||||
config.windowConfig.title = "Frostbite2D - Renderer Test";
|
||||
|
||||
Application& app = Application::get();
|
||||
|
||||
if (!app.init(config)) {
|
||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to initialize application!");
|
||||
return -1;
|
||||
}
|
||||
|
||||
SDL_Log("Starting main loop...");
|
||||
|
||||
app.run();
|
||||
|
||||
app.shutdown();
|
||||
|
||||
SDL_Log("Application exited normally");
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user