mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-12 06:08:30 +09:00
Merge branch 'dev' of github.com:MobileGL-Dev/MobileGL into dev
This commit is contained in:
@@ -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
|
||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user