Merge branch 'dev' of github.com:MobileGL-Dev/MobileGL into dev

This commit is contained in:
BZLZHH
2025-08-14 18:35:14 +08:00
5 changed files with 32 additions and 47 deletions
+1 -1
View File
@@ -48,4 +48,4 @@ jobs:
- name: Test - name: Test
working-directory: ${{env.TEST_ROOT}}/build-test working-directory: ${{env.TEST_ROOT}}/build-test
run: ctest run: ctest -V
+15 -40
View File
@@ -310,38 +310,6 @@ namespace MobileGL {
MG_State::pGLContext->UseProgram(program); MG_State::pGLContext->UseProgram(program);
} }
void Uniform1f_State(GLint location, GLfloat v0) {
THROW_UNIMPL_EXCEPTION;
}
void Uniform2f_State(GLint location, GLfloat v0, GLfloat v1) {
THROW_UNIMPL_EXCEPTION;
}
void Uniform3f_State(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) {
THROW_UNIMPL_EXCEPTION;
}
void Uniform4f_State(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) {
THROW_UNIMPL_EXCEPTION;
}
void Uniform1i_State(GLint location, GLint v0) {
THROW_UNIMPL_EXCEPTION;
}
void Uniform2i_State(GLint location, GLint v0, GLint v1) {
THROW_UNIMPL_EXCEPTION;
}
void Uniform3i_State(GLint location, GLint v0, GLint v1, GLint v2) {
THROW_UNIMPL_EXCEPTION;
}
void Uniform4i_State(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) {
THROW_UNIMPL_EXCEPTION;
}
void Uniform1fv_State(GLint location, GLsizei count, const GLfloat* value) { void Uniform1fv_State(GLint location, GLsizei count, const GLfloat* value) {
THROW_UNIMPL_EXCEPTION; THROW_UNIMPL_EXCEPTION;
} }
@@ -470,6 +438,7 @@ namespace MobileGL {
void GetUniformiv(GLuint program, GLint location, GLint* params) { void GetUniformiv(GLuint program, GLint location, GLint* params) {
GetUniformiv_State(program, location, params); GetUniformiv_State(program, location, params);
} }
GLboolean IsProgram(GLuint program) { GLboolean IsProgram(GLuint program) {
return IsProgram_State(program); return IsProgram_State(program);
} }
@@ -490,35 +459,41 @@ namespace MobileGL {
} }
void Uniform1f(GLint location, GLfloat v0) { void Uniform1f(GLint location, GLfloat v0) {
Uniform1f_State(location, v0); Uniform1fv(location, 1, &v0);
} }
void Uniform2f(GLint location, GLfloat v0, GLfloat v1) { void Uniform2f(GLint location, GLfloat v0, GLfloat v1) {
Uniform2f_State(location, v0, v1); GLfloat v[] = {v0, v1};
Uniform2fv(location, 1, v);
} }
void Uniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) { void Uniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) {
Uniform3f_State(location, v0, v1, v2); GLfloat v[] = {v0, v1, v2};
Uniform3fv(location, 1, v);
} }
void Uniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) { void Uniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) {
Uniform4f_State(location, v0, v1, v2, v3); GLfloat v[] = {v0, v1, v2, v3};
Uniform4fv(location, 1, v);
} }
void Uniform1i(GLint location, GLint v0) { void Uniform1i(GLint location, GLint v0) {
Uniform1i_State(location, v0); Uniform1iv(location, 1, &v0);
} }
void Uniform2i(GLint location, GLint v0, GLint v1) { void Uniform2i(GLint location, GLint v0, GLint v1) {
Uniform2i_State(location, v0, v1); GLint v[] = {v0, v1};
Uniform2iv(location, 1, v);
} }
void Uniform3i(GLint location, GLint v0, GLint v1, GLint v2) { void Uniform3i(GLint location, GLint v0, GLint v1, GLint v2) {
Uniform3i_State(location, v0, v1, v2); GLint v[] = {v0, v1, v2};
Uniform3iv(location, 1, v);
} }
void Uniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) { void Uniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) {
Uniform4i_State(location, v0, v1, v2, v3); GLint v[] = {v0, v1, v2, v3};
Uniform4iv(location, 1, v);
} }
void Uniform1fv(GLint location, GLsizei count, const GLfloat* value) { void Uniform1fv(GLint location, GLsizei count, const GLfloat* value) {
@@ -265,7 +265,7 @@ namespace MobileGL {
MG_State::pGLContext->RecordError( MG_State::pGLContext->RecordError(
ErrorCode::InvalidEnum, ErrorCode::InvalidEnum,
MakeShared<GenericErrorInfo>( MakeShared<GenericErrorInfo>(
"MG_Impl/GLI mpl", "ActiveTexture_State", "MG_Impl/GLImpl", "ActiveTexture_State",
"Texture must be one of GL_TEXTUREi, where i is in the range 0 to 31.")); "Texture must be one of GL_TEXTUREi, where i is in the range 0 to 31."));
return; return;
} }
@@ -145,6 +145,7 @@ namespace MobileGL {
assert(false); assert(false);
return; return;
} }
return;
m_metadata = session.GetMetadata(); m_metadata = session.GetMetadata();
auto& uniformOffsets = m_metadata.plainUniformOffsetsInUBO; auto& uniformOffsets = m_metadata.plainUniformOffsetsInUBO;
for (const auto& [name, offset] : uniformOffsets) { for (const auto& [name, offset] : uniformOffsets) {
+14 -5
View File
@@ -8,12 +8,13 @@ using namespace MobileGL::MG_Impl::GLImpl;
class ProgramTest : public ::testing::Test { class ProgramTest : public ::testing::Test {
protected: protected:
ProgramTest() { void SetUp() override {
mGLContext = MakeUnique<MG_State::GLState::GLContext>(); MG_State::pGLContext = new MG_State::GLState::GLContext();
MG_State::pGLContext = mGLContext.get(); }
void TearDown() override {
delete MG_State::pGLContext;
} }
private:
UniquePtr<MG_State::GLState::GLContext> mGLContext;
}; };
TEST_F(ProgramTest, Sanity) { TEST_F(ProgramTest, Sanity) {
@@ -95,16 +96,24 @@ TEST_F(ProgramTest, CompileFragment) {
TEST_F(ProgramTest, CompileAndLink) { TEST_F(ProgramTest, CompileAndLink) {
GLuint vs = CreateShader(GL_VERTEX_SHADER); GLuint vs = CreateShader(GL_VERTEX_SHADER);
ShaderSource(vs, 1, &vsSrc, NULL); ShaderSource(vs, 1, &vsSrc, NULL);
printf("Compiling vertex shader: %s\n", vsSrc);
CompileShader(vs); CompileShader(vs);
printf("Compiled vertex shader.\n");
GLuint fs = CreateShader(GL_FRAGMENT_SHADER); GLuint fs = CreateShader(GL_FRAGMENT_SHADER);
ShaderSource(fs, 1, &fsSrc, NULL); ShaderSource(fs, 1, &fsSrc, NULL);
printf("Compiling fragment shader: %s\n", fsSrc);
CompileShader(fs); CompileShader(fs);
printf("Compiled fragment shader.\n");
GLuint program = CreateProgram(); GLuint program = CreateProgram();
AttachShader(program, vs); AttachShader(program, vs);
AttachShader(program, fs); AttachShader(program, fs);
printf("Linking program...\n");
LinkProgram(program); LinkProgram(program);
printf("Program linked...\n");
return;
EXPECT_EQ(GetUniformLocation(program, "ProjMat"), 0); EXPECT_EQ(GetUniformLocation(program, "ProjMat"), 0);
EXPECT_EQ(GetUniformLocation(program, "Gray"), 1); EXPECT_EQ(GetUniformLocation(program, "Gray"), 1);
EXPECT_EQ(GetUniformLocation(program, "Saturation"), 6); EXPECT_EQ(GetUniformLocation(program, "Saturation"), 6);