mirror of
https://github.com/Linloir/SceneEditor.git
synced 2025-12-18 16:08:11 +08:00
[TEST] Bounding Box Test
This commit is contained in:
parent
7321455581
commit
947cd9b445
@ -31,10 +31,12 @@ SceneViewer::SceneViewer(QWidget* parent)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Copy the shaders to the temp folder
|
// Copy the shaders to the temp folder
|
||||||
extractShaderResorce("vertexshader.glsl");
|
extractShaderResource("vertexshader.glsl");
|
||||||
extractShaderResorce("fragmentshader.glsl");
|
extractShaderResource("fragmentshader.glsl");
|
||||||
extractShaderResorce("skyboxvertexshader.glsl");
|
extractShaderResource("skyboxvertexshader.glsl");
|
||||||
extractShaderResorce("skyboxfragmentshader.glsl");
|
extractShaderResource("skyboxfragmentshader.glsl");
|
||||||
|
extractShaderResource("boundfragmentshader.glsl");
|
||||||
|
extractShaderResource("boundvertexshader.glsl");
|
||||||
}
|
}
|
||||||
|
|
||||||
SceneViewer::~SceneViewer() {
|
SceneViewer::~SceneViewer() {
|
||||||
@ -47,7 +49,7 @@ SceneViewer::~SceneViewer() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SceneViewer::extractShaderResorce(const QString& shaderName) {
|
void SceneViewer::extractShaderResource(const QString& shaderName) {
|
||||||
QString shaderResourcePath = ":/shaders/" + shaderName;
|
QString shaderResourcePath = ":/shaders/" + shaderName;
|
||||||
QString shaderTempPath = "./temp/shaders/" + shaderName;
|
QString shaderTempPath = "./temp/shaders/" + shaderName;
|
||||||
|
|
||||||
@ -107,6 +109,15 @@ void SceneViewer::initializeGL() {
|
|||||||
vertexShader.dispose();
|
vertexShader.dispose();
|
||||||
fragmentShader.dispose();
|
fragmentShader.dispose();
|
||||||
|
|
||||||
|
_boundShader.ensureInitialized();
|
||||||
|
Logger::info("Bound Shader initialized");
|
||||||
|
VertexShader boundVertexShader("./temp/shaders/boundvertexshader.glsl");
|
||||||
|
FragmentShader boundFragmentShader("./temp/shaders/boundfragmentshader.glsl");
|
||||||
|
_boundShader.attachShader(boundVertexShader);
|
||||||
|
_boundShader.attachShader(boundFragmentShader);
|
||||||
|
boundVertexShader.dispose();
|
||||||
|
boundFragmentShader.dispose();
|
||||||
|
|
||||||
_skyShader.ensureInitialized();
|
_skyShader.ensureInitialized();
|
||||||
Logger::info("Sky Shader initialized");
|
Logger::info("Sky Shader initialized");
|
||||||
|
|
||||||
@ -185,6 +196,14 @@ void SceneViewer::paintGL() {
|
|||||||
|
|
||||||
_shaderProgram.unbind();
|
_shaderProgram.unbind();
|
||||||
|
|
||||||
|
if (_hoveredObject != nullptr) {
|
||||||
|
_boundShader.bind();
|
||||||
|
_boundShader.setUniform("view", view);
|
||||||
|
_boundShader.setUniform("projection", projection);
|
||||||
|
_hoveredObject->boundary().render();
|
||||||
|
_boundShader.unbind();
|
||||||
|
}
|
||||||
|
|
||||||
_skyShader.bind();
|
_skyShader.bind();
|
||||||
_skyShader.setUniform("view", glm::mat4(glm::mat3(view)));
|
_skyShader.setUniform("view", glm::mat4(glm::mat3(view)));
|
||||||
_skyShader.setUniform("projection", projection);
|
_skyShader.setUniform("projection", projection);
|
||||||
|
|||||||
@ -27,6 +27,7 @@ private:
|
|||||||
DirLight* _dirLight = nullptr;
|
DirLight* _dirLight = nullptr;
|
||||||
// Shader program for objects
|
// Shader program for objects
|
||||||
ShaderProgram _shaderProgram = ShaderProgram::empty();
|
ShaderProgram _shaderProgram = ShaderProgram::empty();
|
||||||
|
ShaderProgram _boundShader = ShaderProgram::empty();
|
||||||
ShaderProgram _skyShader = ShaderProgram::empty();
|
ShaderProgram _skyShader = ShaderProgram::empty();
|
||||||
SkyBox* _sky;
|
SkyBox* _sky;
|
||||||
// Main camera
|
// Main camera
|
||||||
@ -55,7 +56,7 @@ public:
|
|||||||
~SceneViewer();
|
~SceneViewer();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void extractShaderResorce(const QString& shaderName);
|
void extractShaderResource(const QString& shaderName);
|
||||||
void hitTest(const Ray& ray);
|
void hitTest(const Ray& ray);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user