Skip to content

Commit

Permalink
Setup viewport and blendmode with calling renderDirect
Browse files Browse the repository at this point in the history
  • Loading branch information
hughsando committed Oct 3, 2024
1 parent c6fdc07 commit ab442e2
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 5 deletions.
2 changes: 1 addition & 1 deletion project/include/Hardware.h
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ class HardwareRenderer : public HardwareContext
virtual void Render(const RenderState &inState, const HardwareData &inData );
virtual void RenderData(const HardwareData &inData, const ColorTransform *ctrans,const Trans4x4 &inTrans)=0;

virtual void BeginDirectRender()=0;
virtual void BeginDirectRender(const Rect &inRect)=0;
virtual void EndDirectRender()=0;


Expand Down
4 changes: 3 additions & 1 deletion project/src/common/Display.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -904,10 +904,12 @@ void DirectRenderer::Render( const RenderTarget &inTarget, const RenderState &in
{
if (inState.mPhase==rpRender && inTarget.IsHardware())
{
RenderState state(inState);

gDirectRenderContext = inTarget.mHardware;
gDirectRenderContext->BeginDirectRender();
Rect clip = inState.mClipRect;
clip.y = inTarget.mHardware->Height() - clip.y - clip.h;
gDirectRenderContext->BeginDirectRender(clip);
if (gNmeRenderGcFree)
{
gc_exit_blocking();
Expand Down
2 changes: 1 addition & 1 deletion project/src/metal/MetalContext.mm
Original file line number Diff line number Diff line change
Expand Up @@ -967,7 +967,7 @@ void RenderData(const HardwareData &inData, const ColorTransform *ctrans,const T
}
}

void BeginDirectRender() { }
void BeginDirectRender(const Rect &inRect) { }
void EndDirectRender() { }
};

Expand Down
20 changes: 19 additions & 1 deletion project/src/opengl/OpenGLContext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -478,8 +478,23 @@ class OGLContext : public HardwareRenderer
#endif
}

void BeginDirectRender()
void BeginDirectRender(const Rect &inRect)
{
makeCurrent();

SetViewport(inRect);

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);


#ifdef WEBOS
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE);
#endif

mLineWidth = 99999;


gDirectMaxAttribArray = 0;
#ifndef NME_NO_GETERROR
int err0 = glGetError();
Expand All @@ -493,6 +508,9 @@ class OGLContext : public HardwareRenderer
for(int i=0;i<gDirectMaxAttribArray;i++)
glDisableVertexAttribArray(i);

// Force dirty
mViewport.w = -1;

#ifndef NME_NO_GETERROR
int err = glGetError();
if (err != GL_NO_ERROR)
Expand Down
3 changes: 2 additions & 1 deletion src/nme/display/DirectRenderer.hx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ class DirectRenderer extends DisplayObject

private function nmeOnRender(inRect:Dynamic)
{
if (render != null) render(new Rectangle(inRect.x, inRect.y, inRect.width, inRect.height));
if (render != null)
render(new Rectangle(inRect.x, inRect.y, inRect.width, inRect.height));
}

public dynamic function render(inRect:Rectangle)
Expand Down

0 comments on commit ab442e2

Please sign in to comment.