Fix the rendering of the KLN89 on the 2D panel that was broken during the move to osg. This is an interim step with the aim being to eventually use render-to-texture.
This commit is contained in:
parent
0c1c224443
commit
443f3f3654
5 changed files with 38 additions and 34 deletions
src
|
@ -914,7 +914,7 @@ FGSpecialInstrument::~FGSpecialInstrument ()
|
||||||
void
|
void
|
||||||
FGSpecialInstrument::draw (osg::State& state)
|
FGSpecialInstrument::draw (osg::State& state)
|
||||||
{
|
{
|
||||||
complex->draw();
|
complex->draw(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -356,9 +356,8 @@ DCLGPS::~DCLGPS() {
|
||||||
// TODO - may need to delete the approach database!!
|
// TODO - may need to delete the approach database!!
|
||||||
}
|
}
|
||||||
|
|
||||||
void DCLGPS::draw() {
|
void DCLGPS::draw(osg::State& state) {
|
||||||
//cout << "draw called!\n";
|
_instrument->draw(state);
|
||||||
_instrument->draw();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DCLGPS::init() {
|
void DCLGPS::init() {
|
||||||
|
|
|
@ -251,7 +251,7 @@ public:
|
||||||
DCLGPS(RenderArea2D* instrument);
|
DCLGPS(RenderArea2D* instrument);
|
||||||
virtual ~DCLGPS() = 0;
|
virtual ~DCLGPS() = 0;
|
||||||
|
|
||||||
virtual void draw();
|
virtual void draw(osg::State& state);
|
||||||
|
|
||||||
virtual void init();
|
virtual void init();
|
||||||
virtual void bind();
|
virtual void bind();
|
||||||
|
|
|
@ -62,24 +62,31 @@ RenderArea2D::RenderArea2D(int logx, int logy, int sizex, int sizey, int posx, i
|
||||||
_ra2d_debug = false;
|
_ra2d_debug = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderArea2D::draw() {
|
void RenderArea2D::draw(osg::State& state) {
|
||||||
#if 0
|
|
||||||
glDisable(GL_TEXTURE_2D);
|
|
||||||
/*
|
|
||||||
glColor3f(1, 1, 0);
|
|
||||||
|
|
||||||
float x1 = _posx;
|
static osg::ref_ptr<osg::StateSet> renderArea2DStateSet;
|
||||||
float x2 = _posx + _sizex;
|
if(!renderArea2DStateSet.valid()) {
|
||||||
float y1 = _posy;
|
renderArea2DStateSet = new osg::StateSet;
|
||||||
float y2 = _posy + _sizey;
|
renderArea2DStateSet->setTextureMode(0, GL_TEXTURE_2D, osg::StateAttribute::OFF);
|
||||||
|
renderArea2DStateSet->setMode(GL_LIGHTING, osg::StateAttribute::OFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
state.pushStateSet(renderArea2DStateSet.get());
|
||||||
|
state.apply();
|
||||||
|
state.setActiveTextureUnit(0);
|
||||||
|
state.setClientActiveTextureUnit(0);
|
||||||
|
|
||||||
|
// DCL - the 2 lines below are copied verbatim from the hotspot drawing code.
|
||||||
|
// I am not sure if they are needed here or not.
|
||||||
|
glPushAttrib(GL_ENABLE_BIT);
|
||||||
|
glDisable(GL_COLOR_MATERIAL);
|
||||||
|
|
||||||
|
// FIXME - disabling all clip planes causes bleed-through through the splash screen.
|
||||||
|
glDisable(GL_CLIP_PLANE0);
|
||||||
|
glDisable(GL_CLIP_PLANE1);
|
||||||
|
glDisable(GL_CLIP_PLANE2);
|
||||||
|
glDisable(GL_CLIP_PLANE3);
|
||||||
|
|
||||||
glBegin(GL_LINE_LOOP);
|
|
||||||
glVertex2f(x1, y1);
|
|
||||||
glVertex2f(x1, y2);
|
|
||||||
glVertex2f(x2, y2);
|
|
||||||
glVertex2f(x2, y1);
|
|
||||||
glEnd();
|
|
||||||
*/
|
|
||||||
oldDrawBackground();
|
oldDrawBackground();
|
||||||
|
|
||||||
for(unsigned int i = 0; i < drawing_list.size(); ++i) {
|
for(unsigned int i = 0; i < drawing_list.size(); ++i) {
|
||||||
|
@ -101,8 +108,12 @@ void RenderArea2D::draw() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
glEnable(GL_TEXTURE_2D);
|
glPopAttrib();
|
||||||
#endif
|
|
||||||
|
state.popStateSet();
|
||||||
|
state.apply();
|
||||||
|
state.setActiveTextureUnit(0);
|
||||||
|
state.setClientActiveTextureUnit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set clipping region in logical units
|
// Set clipping region in logical units
|
||||||
|
@ -336,34 +347,24 @@ void RenderArea2D::Flush() {
|
||||||
// -----------------------------------------
|
// -----------------------------------------
|
||||||
|
|
||||||
void RenderArea2D::doSetColor( const float *rgba ) {
|
void RenderArea2D::doSetColor( const float *rgba ) {
|
||||||
//OSGFIXME
|
|
||||||
#if 0
|
|
||||||
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, rgba);
|
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, rgba);
|
||||||
glColor4fv( rgba );
|
glColor4fv( rgba );
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderArea2D::doDrawQuad( const sgVec2 *p, const sgVec3 *normals ) {
|
void RenderArea2D::doDrawQuad( const sgVec2 *p, const sgVec3 *normals ) {
|
||||||
//cout << "doDrawQuad: " << *p[0] << ", " << *(p[0]+1) << ", " << *p[1] << ", " << *(p[1]+1) << ", " << *p[2] << ", " << *p([2]+1) << ", " << *p[3] << ", " << *p([3]+1) <<'\n';
|
|
||||||
//OSGFIXME
|
|
||||||
#if 0
|
|
||||||
glBegin(GL_QUADS);
|
glBegin(GL_QUADS);
|
||||||
glNormal3fv( normals[0] ); glVertex2fv( p[0] );
|
glNormal3fv( normals[0] ); glVertex2fv( p[0] );
|
||||||
glNormal3fv( normals[1] ); glVertex2fv( p[1] );
|
glNormal3fv( normals[1] ); glVertex2fv( p[1] );
|
||||||
glNormal3fv( normals[2] ); glVertex2fv( p[2] );
|
glNormal3fv( normals[2] ); glVertex2fv( p[2] );
|
||||||
glNormal3fv( normals[3] ); glVertex2fv( p[3] );
|
glNormal3fv( normals[3] ); glVertex2fv( p[3] );
|
||||||
glEnd();
|
glEnd();
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderArea2D::doDrawQuad( const sgVec2 *p, const sgVec3 *normals, const sgVec4 *color ) {
|
void RenderArea2D::doDrawQuad( const sgVec2 *p, const sgVec3 *normals, const sgVec4 *color ) {
|
||||||
//OSGFIXME
|
|
||||||
#if 0
|
|
||||||
glBegin(GL_QUADS);
|
glBegin(GL_QUADS);
|
||||||
glColor4fv( color[0] );glNormal3fv( normals[0] ); glVertex2fv( p[0] );
|
glColor4fv( color[0] );glNormal3fv( normals[0] ); glVertex2fv( p[0] );
|
||||||
glColor4fv( color[1] );glNormal3fv( normals[1] ); glVertex2fv( p[1] );
|
glColor4fv( color[1] );glNormal3fv( normals[1] ); glVertex2fv( p[1] );
|
||||||
glColor4fv( color[2] );glNormal3fv( normals[2] ); glVertex2fv( p[2] );
|
glColor4fv( color[2] );glNormal3fv( normals[2] ); glVertex2fv( p[2] );
|
||||||
glColor4fv( color[3] );glNormal3fv( normals[3] ); glVertex2fv( p[3] );
|
glColor4fv( color[3] );glNormal3fv( normals[3] ); glVertex2fv( p[3] );
|
||||||
glEnd();
|
glEnd();
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,10 @@
|
||||||
# include <config.h>
|
# include <config.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <osg/ref_ptr>
|
||||||
|
#include <osg/State>
|
||||||
|
#include <osg/StateSet>
|
||||||
|
|
||||||
#include <plib/sg.h>
|
#include <plib/sg.h>
|
||||||
#include <simgear/compiler.h>
|
#include <simgear/compiler.h>
|
||||||
|
|
||||||
|
@ -56,7 +60,7 @@ public:
|
||||||
RenderArea2D(int logx, int logy, int sizex, int sizey, int posx, int posy);
|
RenderArea2D(int logx, int logy, int sizex, int sizey, int posx, int posy);
|
||||||
~RenderArea2D();
|
~RenderArea2D();
|
||||||
|
|
||||||
void draw();
|
void draw(osg::State& state);
|
||||||
|
|
||||||
void SetPixelColor(const float* rgba);
|
void SetPixelColor(const float* rgba);
|
||||||
void SetBackgroundColor(const float* rgba);
|
void SetBackgroundColor(const float* rgba);
|
||||||
|
|
Loading…
Add table
Reference in a new issue