GLDraw: Fixed binding issue with RX580

git-svn-id: svn://ultimatepp.org/upp/trunk@12650 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
cxl 2019-01-07 19:20:35 +00:00
parent 50ad11855b
commit e73d5db104
5 changed files with 22 additions and 17 deletions

View file

@ -4,7 +4,7 @@ namespace Upp {
GLCode::GLCode(const char *vertex_shader, const char *pixel_shader)
{
Create(vertex_shader, pixel_shader);
Compile(vertex_shader, pixel_shader);
Vector<Tuple2<int, const char *>> ins;
CParser p(vertex_shader);
int ii = 0;
@ -36,6 +36,7 @@ GLCode::GLCode(const char *vertex_shader, const char *pixel_shader)
}
else
p.SkipTerm();
Link();
}
GLCode& GLCode::Uniform(int i, double a)

View file

@ -47,6 +47,9 @@ protected:
GLuint program;
int64 serialid;
void Compile(const char *vertex_shader_, const char *fragment_shader_);
void Link();
public:
void Create(const char *vertex_shader, const char *fragment_shader,
Tuple2<int, const char *> *bind_attr = NULL, int bind_count = 0);

View file

@ -33,8 +33,7 @@ static GLuint LoadShader(const char *src, GLenum type) {
return shader;
}
void GLProgram::Create(const char *vertex_shader_, const char *fragment_shader_,
Tuple2<int, const char *> *bind_attr, int bind_count)
void GLProgram::Compile(const char *vertex_shader_, const char *fragment_shader_)
{
Clear();
@ -45,10 +44,10 @@ void GLProgram::Create(const char *vertex_shader_, const char *fragment_shader_,
glAttachShader(program, vertex_shader);
glAttachShader(program, fragment_shader);
for(int i = 0; i < bind_count; i++)
glBindAttribLocation(program, bind_attr[i].a, bind_attr[i].b);
}
void GLProgram::Link()
{
glLinkProgram(program);
GLint linked;
@ -65,6 +64,17 @@ void GLProgram::Create(const char *vertex_shader_, const char *fragment_shader_,
Panic("Failed to link");
Clear();
}
}
void GLProgram::Create(const char *vertex_shader_, const char *fragment_shader_,
Tuple2<int, const char *> *bind_attr, int bind_count)
{
Compile(vertex_shader_, fragment_shader_);
for(int i = 0; i < bind_count; i++)
glBindAttribLocation(program, bind_attr[i].a, bind_attr[i].b);
Link();
Use();
}

View file

@ -14,9 +14,6 @@ void DrawGL::Init(Size sz, double alpha)
SyncScissor();
prev = Point(0, 0);
path_done = false;
DLOG("DrawGL::Init");
DDUMP(dd.vs);
DDUMP(dd.off);
}
DrawGL::~DrawGL()

View file

@ -24,7 +24,6 @@ void GLTriangles::Draw(const GLContext2D& dd)
void main()
{
gl_FragColor = v_color;
gl_FragColor = vec4(0, 1, 0, 1);
}
)");
@ -36,14 +35,9 @@ void GLTriangles::Draw(const GLContext2D& dd)
va.Add(color, 3);
va.Index(elements);
DDUMP(pos);
DDUMP(color);
DDUMP(elements);
// glEnable(GL_BLEND);
glEnable(GL_BLEND);
glDisable(GL_CULL_FACE);
// glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisable(GL_DEPTH_TEST);
// glDepthFunc(GL_LEQUAL);