- see if this fixes color picking
This commit is contained in:
parent
17a599ced3
commit
ceedef5200
|
@ -1837,7 +1837,7 @@ void Renderer::renderMouse3d() {
|
||||||
|
|
||||||
if(gui->isPlacingBuilding()) {
|
if(gui->isPlacingBuilding()) {
|
||||||
|
|
||||||
modelRenderer->begin(true, true, false);
|
modelRenderer->begin(true, true, false, false);
|
||||||
|
|
||||||
const UnitType *building= gui->getBuilding();
|
const UnitType *building= gui->getBuilding();
|
||||||
const Gui *gui= game->getGui();
|
const Gui *gui= game->getGui();
|
||||||
|
@ -2576,9 +2576,7 @@ void Renderer::renderTextBoundingBox3D(const string &text, Font3D *font,
|
||||||
}
|
}
|
||||||
glColor4fv(Vec4f(1.f, 1.f, 1.f, alpha).ptr());
|
glColor4fv(Vec4f(1.f, 1.f, 1.f, alpha).ptr());
|
||||||
TextRendererSafeWrapper safeTextRender(textRenderer3D,font);
|
TextRendererSafeWrapper safeTextRender(textRenderer3D,font);
|
||||||
//textRenderer3D->begin(font);
|
|
||||||
textRenderer3D->render(text, pos.x, pos.y);
|
textRenderer3D->render(text, pos.x, pos.y);
|
||||||
//textRenderer3D->end();
|
|
||||||
safeTextRender.end();
|
safeTextRender.end();
|
||||||
|
|
||||||
glDisable(GL_BLEND);
|
glDisable(GL_BLEND);
|
||||||
|
@ -2597,7 +2595,6 @@ void Renderer::renderText3D(const string &text, Font3D *font, float alpha, int x
|
||||||
Vec2i pos= Vec2i(x, y);
|
Vec2i pos= Vec2i(x, y);
|
||||||
//Vec2i pos= centered? computeCenteredPos(text, font, x, y): Vec2i(x, y);
|
//Vec2i pos= centered? computeCenteredPos(text, font, x, y): Vec2i(x, y);
|
||||||
|
|
||||||
//textRenderer3D->begin(font);
|
|
||||||
TextRendererSafeWrapper safeTextRender(textRenderer3D,font);
|
TextRendererSafeWrapper safeTextRender(textRenderer3D,font);
|
||||||
textRenderer3D->render(text, pos.x, pos.y, centered);
|
textRenderer3D->render(text, pos.x, pos.y, centered);
|
||||||
//textRenderer3D->end();
|
//textRenderer3D->end();
|
||||||
|
@ -2618,10 +2615,8 @@ void Renderer::renderText(const string &text, Font2D *font, float alpha, int x,
|
||||||
|
|
||||||
Vec2i pos= centered? computeCenteredPos(text, font, x, y): Vec2i(x, y);
|
Vec2i pos= centered? computeCenteredPos(text, font, x, y): Vec2i(x, y);
|
||||||
|
|
||||||
//textRenderer->begin(font);
|
|
||||||
TextRendererSafeWrapper safeTextRender(textRenderer,font);
|
TextRendererSafeWrapper safeTextRender(textRenderer,font);
|
||||||
textRenderer->render(text, pos.x, pos.y);
|
textRenderer->render(text, pos.x, pos.y);
|
||||||
//textRenderer->end();
|
|
||||||
safeTextRender.end();
|
safeTextRender.end();
|
||||||
|
|
||||||
glPopAttrib();
|
glPopAttrib();
|
||||||
|
@ -2726,10 +2721,8 @@ void Renderer::renderTextBoundingBox3D(const string &text, Font3D *font,
|
||||||
renderTextSurroundingBox(pos.x, pos.y, w, h,maxEditWidth,maxEditRenderWidth);
|
renderTextSurroundingBox(pos.x, pos.y, w, h,maxEditWidth,maxEditRenderWidth);
|
||||||
}
|
}
|
||||||
glColor3fv(color.ptr());
|
glColor3fv(color.ptr());
|
||||||
//textRenderer3D->begin(font);
|
|
||||||
TextRendererSafeWrapper safeTextRender(textRenderer3D,font);
|
TextRendererSafeWrapper safeTextRender(textRenderer3D,font);
|
||||||
textRenderer3D->render(text, pos.x, pos.y);
|
textRenderer3D->render(text, pos.x, pos.y);
|
||||||
//textRenderer3D->end();
|
|
||||||
safeTextRender.end();
|
safeTextRender.end();
|
||||||
|
|
||||||
glPopAttrib();
|
glPopAttrib();
|
||||||
|
@ -2746,10 +2739,8 @@ void Renderer::renderText3D(const string &text, Font3D *font, const Vec3f &color
|
||||||
Vec2i pos= Vec2i(x, y);
|
Vec2i pos= Vec2i(x, y);
|
||||||
//Vec2i pos= centered? computeCenteredPos(text, font, x, y): Vec2i(x, y);
|
//Vec2i pos= centered? computeCenteredPos(text, font, x, y): Vec2i(x, y);
|
||||||
|
|
||||||
//textRenderer3D->begin(font);
|
|
||||||
TextRendererSafeWrapper safeTextRender(textRenderer3D,font);
|
TextRendererSafeWrapper safeTextRender(textRenderer3D,font);
|
||||||
textRenderer3D->render(text, pos.x, pos.y, centered);
|
textRenderer3D->render(text, pos.x, pos.y, centered);
|
||||||
//textRenderer3D->end();
|
|
||||||
safeTextRender.end();
|
safeTextRender.end();
|
||||||
|
|
||||||
glPopAttrib();
|
glPopAttrib();
|
||||||
|
@ -2765,10 +2756,8 @@ void Renderer::renderText(const string &text, Font2D *font, const Vec3f &color,
|
||||||
|
|
||||||
Vec2i pos= centered? computeCenteredPos(text, font, x, y): Vec2i(x, y);
|
Vec2i pos= centered? computeCenteredPos(text, font, x, y): Vec2i(x, y);
|
||||||
|
|
||||||
//textRenderer->begin(font);
|
|
||||||
TextRendererSafeWrapper safeTextRender(textRenderer,font);
|
TextRendererSafeWrapper safeTextRender(textRenderer,font);
|
||||||
textRenderer->render(text, pos.x, pos.y);
|
textRenderer->render(text, pos.x, pos.y);
|
||||||
//textRenderer->end();
|
|
||||||
safeTextRender.end();
|
safeTextRender.end();
|
||||||
|
|
||||||
glPopAttrib();
|
glPopAttrib();
|
||||||
|
@ -2808,10 +2797,8 @@ void Renderer::renderTextBoundingBox3D(const string &text, Font3D *font,
|
||||||
renderTextSurroundingBox(pos.x, pos.y, w, h,maxEditWidth,maxEditRenderWidth);
|
renderTextSurroundingBox(pos.x, pos.y, w, h,maxEditWidth,maxEditRenderWidth);
|
||||||
}
|
}
|
||||||
glColor4fv(color.ptr());
|
glColor4fv(color.ptr());
|
||||||
//textRenderer3D->begin(font);
|
|
||||||
TextRendererSafeWrapper safeTextRender(textRenderer3D,font);
|
TextRendererSafeWrapper safeTextRender(textRenderer3D,font);
|
||||||
textRenderer3D->render(text, pos.x, pos.y);
|
textRenderer3D->render(text, pos.x, pos.y);
|
||||||
//textRenderer3D->end();
|
|
||||||
safeTextRender.end();
|
safeTextRender.end();
|
||||||
|
|
||||||
glDisable(GL_BLEND);
|
glDisable(GL_BLEND);
|
||||||
|
@ -2830,10 +2817,8 @@ void Renderer::renderText3D(const string &text, Font3D *font, const Vec4f &color
|
||||||
Vec2i pos= Vec2i(x, y);
|
Vec2i pos= Vec2i(x, y);
|
||||||
//Vec2i pos= centered? computeCenteredPos(text, font, x, y): Vec2i(x, y);
|
//Vec2i pos= centered? computeCenteredPos(text, font, x, y): Vec2i(x, y);
|
||||||
|
|
||||||
//textRenderer3D->begin(font);
|
|
||||||
TextRendererSafeWrapper safeTextRender(textRenderer3D,font);
|
TextRendererSafeWrapper safeTextRender(textRenderer3D,font);
|
||||||
textRenderer3D->render(text, pos.x, pos.y, centered);
|
textRenderer3D->render(text, pos.x, pos.y, centered);
|
||||||
//textRenderer3D->end();
|
|
||||||
safeTextRender.end();
|
safeTextRender.end();
|
||||||
|
|
||||||
glDisable(GL_BLEND);
|
glDisable(GL_BLEND);
|
||||||
|
@ -2851,10 +2836,8 @@ void Renderer::renderText(const string &text, Font2D *font, const Vec4f &color,
|
||||||
|
|
||||||
Vec2i pos= centered? computeCenteredPos(text, font, x, y): Vec2i(x, y);
|
Vec2i pos= centered? computeCenteredPos(text, font, x, y): Vec2i(x, y);
|
||||||
|
|
||||||
//textRenderer->begin(font);
|
|
||||||
TextRendererSafeWrapper safeTextRender(textRenderer,font);
|
TextRendererSafeWrapper safeTextRender(textRenderer,font);
|
||||||
textRenderer->render(text, pos.x, pos.y);
|
textRenderer->render(text, pos.x, pos.y);
|
||||||
//textRenderer->end();
|
|
||||||
safeTextRender.end();
|
safeTextRender.end();
|
||||||
|
|
||||||
glPopAttrib();
|
glPopAttrib();
|
||||||
|
@ -2873,7 +2856,6 @@ void Renderer::renderTextShadow3D(const string &text, Font3D *font,const Vec4f &
|
||||||
|
|
||||||
Vec2i pos= centered? computeCenteredPos(text, font, x, y): Vec2i(x, y);
|
Vec2i pos= centered? computeCenteredPos(text, font, x, y): Vec2i(x, y);
|
||||||
|
|
||||||
//textRenderer3D->begin(font);
|
|
||||||
TextRendererSafeWrapper safeTextRender(textRenderer3D,font);
|
TextRendererSafeWrapper safeTextRender(textRenderer3D,font);
|
||||||
if(color.w < 0.5) {
|
if(color.w < 0.5) {
|
||||||
glColor3f(0.0f, 0.0f, 0.0f);
|
glColor3f(0.0f, 0.0f, 0.0f);
|
||||||
|
@ -2902,7 +2884,6 @@ void Renderer::renderTextShadow(const string &text, Font2D *font,const Vec4f &co
|
||||||
|
|
||||||
Vec2i pos= centered? computeCenteredPos(text, font, x, y): Vec2i(x, y);
|
Vec2i pos= centered? computeCenteredPos(text, font, x, y): Vec2i(x, y);
|
||||||
|
|
||||||
//textRenderer->begin(font);
|
|
||||||
TextRendererSafeWrapper safeTextRender(textRenderer,font);
|
TextRendererSafeWrapper safeTextRender(textRenderer,font);
|
||||||
if(color.w < 0.5) {
|
if(color.w < 0.5) {
|
||||||
glColor3f(0.0f, 0.0f, 0.0f);
|
glColor3f(0.0f, 0.0f, 0.0f);
|
||||||
|
@ -4618,7 +4599,7 @@ void Renderer::renderObjects(const int renderFps) {
|
||||||
glEnable(GL_COLOR_MATERIAL);
|
glEnable(GL_COLOR_MATERIAL);
|
||||||
glAlphaFunc(GL_GREATER, 0.5f);
|
glAlphaFunc(GL_GREATER, 0.5f);
|
||||||
|
|
||||||
modelRenderer->begin(true, true, false);
|
modelRenderer->begin(true, true, false, false);
|
||||||
}
|
}
|
||||||
//ambient and diffuse color is taken from cell color
|
//ambient and diffuse color is taken from cell color
|
||||||
|
|
||||||
|
@ -5015,7 +4996,7 @@ void Renderer::renderUnits(const int renderFps) {
|
||||||
}
|
}
|
||||||
glActiveTexture(baseTexUnit);
|
glActiveTexture(baseTexUnit);
|
||||||
|
|
||||||
modelRenderer->begin(true, true, true, &meshCallbackTeamColor);
|
modelRenderer->begin(true, true, true, false, &meshCallbackTeamColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
glMatrixMode(GL_MODELVIEW);
|
glMatrixMode(GL_MODELVIEW);
|
||||||
|
@ -5107,7 +5088,7 @@ void Renderer::renderUnitsToBuild(const int renderFps) {
|
||||||
glEnable(GL_COLOR_MATERIAL);
|
glEnable(GL_COLOR_MATERIAL);
|
||||||
glDepthMask(GL_FALSE);
|
glDepthMask(GL_FALSE);
|
||||||
|
|
||||||
modelRenderer->begin(true, true, false);
|
modelRenderer->begin(true, true, false, false);
|
||||||
|
|
||||||
for(int visibleUnitIndex = 0;
|
for(int visibleUnitIndex = 0;
|
||||||
visibleUnitIndex < qCache.visibleQuadUnitBuildList.size(); ++visibleUnitIndex) {
|
visibleUnitIndex < qCache.visibleQuadUnitBuildList.size(); ++visibleUnitIndex) {
|
||||||
|
@ -6386,7 +6367,7 @@ void Renderer::renderMenuBackground(const MenuBackground *menuBackground) {
|
||||||
//main model
|
//main model
|
||||||
glEnable(GL_ALPHA_TEST);
|
glEnable(GL_ALPHA_TEST);
|
||||||
glAlphaFunc(GL_GREATER, 0.5f);
|
glAlphaFunc(GL_GREATER, 0.5f);
|
||||||
modelRenderer->begin(true, true, true);
|
modelRenderer->begin(true, true, true, false);
|
||||||
menuBackground->getMainModelPtr()->updateInterpolationData(menuBackground->getAnim(), true);
|
menuBackground->getMainModelPtr()->updateInterpolationData(menuBackground->getAnim(), true);
|
||||||
modelRenderer->render(menuBackground->getMainModelPtr());
|
modelRenderer->render(menuBackground->getMainModelPtr());
|
||||||
modelRenderer->end();
|
modelRenderer->end();
|
||||||
|
@ -6405,7 +6386,7 @@ void Renderer::renderMenuBackground(const MenuBackground *menuBackground) {
|
||||||
CacheManager::getCachedItem< std::vector<Vec3f> >(GameConstants::characterMenuScreenPositionListCacheLookupKey);
|
CacheManager::getCachedItem< std::vector<Vec3f> >(GameConstants::characterMenuScreenPositionListCacheLookupKey);
|
||||||
characterMenuScreenPositionListCache.clear();
|
characterMenuScreenPositionListCache.clear();
|
||||||
|
|
||||||
modelRenderer->begin(true, true, false);
|
modelRenderer->begin(true, true, false, false);
|
||||||
|
|
||||||
for(int i=0; i < MenuBackground::characterCount; ++i) {
|
for(int i=0; i < MenuBackground::characterCount; ++i) {
|
||||||
glMatrixMode(GL_MODELVIEW);
|
glMatrixMode(GL_MODELVIEW);
|
||||||
|
@ -6559,7 +6540,7 @@ void Renderer::renderMenuBackground(Camera *camera, float fade, Model *mainModel
|
||||||
if(mainModel) {
|
if(mainModel) {
|
||||||
glEnable(GL_ALPHA_TEST);
|
glEnable(GL_ALPHA_TEST);
|
||||||
glAlphaFunc(GL_GREATER, 0.5f);
|
glAlphaFunc(GL_GREATER, 0.5f);
|
||||||
modelRenderer->begin(true, true, true);
|
modelRenderer->begin(true, true, true, false);
|
||||||
mainModel->updateInterpolationData(anim, true);
|
mainModel->updateInterpolationData(anim, true);
|
||||||
modelRenderer->render(mainModel);
|
modelRenderer->render(mainModel);
|
||||||
modelRenderer->end();
|
modelRenderer->end();
|
||||||
|
@ -6574,7 +6555,7 @@ void Renderer::renderMenuBackground(Camera *camera, float fade, Model *mainModel
|
||||||
glAlphaFunc(GL_GREATER, 0.0f);
|
glAlphaFunc(GL_GREATER, 0.0f);
|
||||||
float alpha= clamp((minDist-dist) / minDist, 0.f, 1.f);
|
float alpha= clamp((minDist-dist) / minDist, 0.f, 1.f);
|
||||||
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, Vec4f(1.0f, 1.0f, 1.0f, alpha).ptr());
|
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, Vec4f(1.0f, 1.0f, 1.0f, alpha).ptr());
|
||||||
modelRenderer->begin(true, true, false);
|
modelRenderer->begin(true, true, false, false);
|
||||||
|
|
||||||
for(unsigned int i = 0; i < characterModels.size(); ++i) {
|
for(unsigned int i = 0; i < characterModels.size(); ++i) {
|
||||||
if(characterModels[i]) {
|
if(characterModels[i]) {
|
||||||
|
@ -7459,20 +7440,11 @@ vector<Unit *> Renderer::renderUnitsFast(bool renderingShadows, bool colorPickin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//assertGl();
|
modelRenderer->begin(false, renderingShadows, false, colorPickingSelection);
|
||||||
|
|
||||||
modelRenderer->begin(false, renderingShadows, false);
|
if(colorPickingSelection == false) {
|
||||||
|
|
||||||
//assertGl();
|
|
||||||
|
|
||||||
if(colorPickingSelection == true) {
|
|
||||||
BaseColorPickEntity::beginPicking();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
glInitNames();
|
glInitNames();
|
||||||
}
|
}
|
||||||
|
|
||||||
//assertGl();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(colorPickingSelection == false) {
|
if(colorPickingSelection == false) {
|
||||||
|
@ -7504,12 +7476,8 @@ vector<Unit *> Renderer::renderUnitsFast(bool renderingShadows, bool colorPickin
|
||||||
if(colorPickingSelection == true) {
|
if(colorPickingSelection == true) {
|
||||||
unit->setUniquePickingColor();
|
unit->setUniquePickingColor();
|
||||||
unitsList.push_back(unit);
|
unitsList.push_back(unit);
|
||||||
|
|
||||||
//assertGl();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//assertGl();
|
|
||||||
|
|
||||||
modelRenderer->render(model,rmSelection);
|
modelRenderer->render(model,rmSelection);
|
||||||
|
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
@ -7517,35 +7485,22 @@ vector<Unit *> Renderer::renderUnitsFast(bool renderingShadows, bool colorPickin
|
||||||
if(colorPickingSelection == false) {
|
if(colorPickingSelection == false) {
|
||||||
glPopName();
|
glPopName();
|
||||||
}
|
}
|
||||||
|
|
||||||
//assertGl();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(modelRenderStarted == true) {
|
if(modelRenderStarted == true) {
|
||||||
//assertGl();
|
|
||||||
|
|
||||||
modelRenderer->end();
|
modelRenderer->end();
|
||||||
|
if(colorPickingSelection == false) {
|
||||||
//assertGl();
|
|
||||||
|
|
||||||
if(colorPickingSelection == true) {
|
|
||||||
BaseColorPickEntity::endPicking();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
glPopAttrib();
|
glPopAttrib();
|
||||||
}
|
}
|
||||||
|
|
||||||
// assertGl();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// assertGl();
|
|
||||||
|
|
||||||
return unitsList;
|
return unitsList;
|
||||||
}
|
}
|
||||||
|
|
||||||
//render objects for selection purposes
|
//render objects for selection purposes
|
||||||
vector<Object *> Renderer::renderObjectsFast(bool renderingShadows, bool resourceOnly, bool colorPickingSelection) {
|
vector<Object *> Renderer::renderObjectsFast(bool renderingShadows, bool resourceOnly,
|
||||||
|
bool colorPickingSelection) {
|
||||||
vector<Object *> objectList;
|
vector<Object *> objectList;
|
||||||
if(GlobalStaticFlags::getIsNonGraphicalModeEnabled() == true) {
|
if(GlobalStaticFlags::getIsNonGraphicalModeEnabled() == true) {
|
||||||
return objectList;
|
return objectList;
|
||||||
|
@ -7591,12 +7546,9 @@ vector<Object *> Renderer::renderObjectsFast(bool renderingShadows, bool resour
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
modelRenderer->begin(false, renderingShadows, false);
|
modelRenderer->begin(false, renderingShadows, false, colorPickingSelection);
|
||||||
|
|
||||||
if(colorPickingSelection == true) {
|
if(colorPickingSelection == false) {
|
||||||
BaseColorPickEntity::beginPicking();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
glInitNames();
|
glInitNames();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7640,10 +7592,7 @@ vector<Object *> Renderer::renderObjectsFast(bool renderingShadows, bool resour
|
||||||
if(modelRenderStarted == true) {
|
if(modelRenderStarted == true) {
|
||||||
modelRenderer->end();
|
modelRenderer->end();
|
||||||
|
|
||||||
if(colorPickingSelection == true) {
|
if(colorPickingSelection == false) {
|
||||||
BaseColorPickEntity::endPicking();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
glPopAttrib();
|
glPopAttrib();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,7 @@ private:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ModelRendererGl();
|
ModelRendererGl();
|
||||||
virtual void begin(bool renderNormals, bool renderTextures, bool renderColors, MeshCallback *meshCallback);
|
virtual void begin(bool renderNormals, bool renderTextures, bool renderColors, bool colorPickingMode, MeshCallback *meshCallback);
|
||||||
virtual void end();
|
virtual void end();
|
||||||
virtual void render(Model *model,int renderMode=rmNormal);
|
virtual void render(Model *model,int renderMode=rmNormal);
|
||||||
virtual void renderNormalsOnly(Model *model);
|
virtual void renderNormalsOnly(Model *model);
|
||||||
|
|
|
@ -49,6 +49,7 @@ protected:
|
||||||
bool renderNormals;
|
bool renderNormals;
|
||||||
bool renderTextures;
|
bool renderTextures;
|
||||||
bool renderColors;
|
bool renderColors;
|
||||||
|
bool colorPickingMode;
|
||||||
MeshCallback *meshCallback;
|
MeshCallback *meshCallback;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -56,13 +57,14 @@ public:
|
||||||
renderNormals = false;
|
renderNormals = false;
|
||||||
renderTextures = false;
|
renderTextures = false;
|
||||||
renderColors = false;
|
renderColors = false;
|
||||||
|
colorPickingMode = false;
|
||||||
|
|
||||||
meshCallback= NULL;
|
meshCallback= NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual ~ModelRenderer(){};
|
virtual ~ModelRenderer(){};
|
||||||
|
|
||||||
virtual void begin(bool renderNormals, bool renderTextures, bool renderColors, MeshCallback *meshCallback= NULL)=0;
|
virtual void begin(bool renderNormals, bool renderTextures, bool renderColors, bool colorPickingMode, MeshCallback *meshCallback= NULL)=0;
|
||||||
virtual void end()=0;
|
virtual void end()=0;
|
||||||
virtual void render(Model *model,int renderMode=rmNormal)=0;
|
virtual void render(Model *model,int renderMode=rmNormal)=0;
|
||||||
virtual void renderNormalsOnly(Model *model)=0;
|
virtual void renderNormalsOnly(Model *model)=0;
|
||||||
|
|
|
@ -34,7 +34,8 @@ ModelRendererGl::ModelRendererGl() {
|
||||||
lastTexture=0;
|
lastTexture=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModelRendererGl::begin(bool renderNormals, bool renderTextures, bool renderColors, MeshCallback *meshCallback) {
|
void ModelRendererGl::begin(bool renderNormals, bool renderTextures, bool renderColors,
|
||||||
|
bool colorPickingMode, MeshCallback *meshCallback) {
|
||||||
//assertions
|
//assertions
|
||||||
assert(rendering == false);
|
assert(rendering == false);
|
||||||
assertGl();
|
assertGl();
|
||||||
|
@ -42,6 +43,7 @@ void ModelRendererGl::begin(bool renderNormals, bool renderTextures, bool render
|
||||||
this->renderTextures= renderTextures;
|
this->renderTextures= renderTextures;
|
||||||
this->renderNormals= renderNormals;
|
this->renderNormals= renderNormals;
|
||||||
this->renderColors= renderColors;
|
this->renderColors= renderColors;
|
||||||
|
this->colorPickingMode = colorPickingMode;
|
||||||
this->meshCallback= meshCallback;
|
this->meshCallback= meshCallback;
|
||||||
|
|
||||||
rendering= true;
|
rendering= true;
|
||||||
|
@ -53,14 +55,19 @@ void ModelRendererGl::begin(bool renderNormals, bool renderTextures, bool render
|
||||||
glPushClientAttrib(GL_CLIENT_VERTEX_ARRAY_BIT);
|
glPushClientAttrib(GL_CLIENT_VERTEX_ARRAY_BIT);
|
||||||
|
|
||||||
//init opengl
|
//init opengl
|
||||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
if(this->colorPickingMode == false) {
|
||||||
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
|
}
|
||||||
glBindTexture(GL_TEXTURE_2D, 0);
|
glBindTexture(GL_TEXTURE_2D, 0);
|
||||||
glFrontFace(GL_CCW);
|
glFrontFace(GL_CCW);
|
||||||
glEnable(GL_NORMALIZE);
|
|
||||||
glEnable(GL_BLEND);
|
|
||||||
|
|
||||||
glEnable(GL_POLYGON_OFFSET_FILL);
|
if(this->colorPickingMode == false) {
|
||||||
glPolygonOffset(0.005f, 0.0f);
|
glEnable(GL_NORMALIZE);
|
||||||
|
glEnable(GL_BLEND);
|
||||||
|
|
||||||
|
glEnable(GL_POLYGON_OFFSET_FILL);
|
||||||
|
glPolygonOffset(0.005f, 0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
glEnableClientState(GL_VERTEX_ARRAY);
|
glEnableClientState(GL_VERTEX_ARRAY);
|
||||||
|
|
||||||
|
@ -81,6 +88,11 @@ void ModelRendererGl::begin(bool renderNormals, bool renderTextures, bool render
|
||||||
glHint( GL_POLYGON_SMOOTH_HINT, GL_FASTEST );
|
glHint( GL_POLYGON_SMOOTH_HINT, GL_FASTEST );
|
||||||
glHint( GL_TEXTURE_COMPRESSION_HINT, GL_FASTEST );
|
glHint( GL_TEXTURE_COMPRESSION_HINT, GL_FASTEST );
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
if(this->colorPickingMode == true) {
|
||||||
|
BaseColorPickEntity::beginPicking();
|
||||||
|
}
|
||||||
|
|
||||||
//assertions
|
//assertions
|
||||||
assertGl();
|
assertGl();
|
||||||
}
|
}
|
||||||
|
@ -93,13 +105,19 @@ void ModelRendererGl::end() {
|
||||||
//set render state
|
//set render state
|
||||||
rendering= false;
|
rendering= false;
|
||||||
|
|
||||||
glPolygonOffset( 0.0f, 0.0f );
|
if(this->colorPickingMode == false) {
|
||||||
glDisable(GL_POLYGON_OFFSET_FILL);
|
glPolygonOffset( 0.0f, 0.0f );
|
||||||
|
glDisable(GL_POLYGON_OFFSET_FILL);
|
||||||
|
}
|
||||||
|
|
||||||
//pop
|
//pop
|
||||||
glPopAttrib();
|
glPopAttrib();
|
||||||
glPopClientAttrib();
|
glPopClientAttrib();
|
||||||
|
|
||||||
|
if(colorPickingMode == true) {
|
||||||
|
BaseColorPickEntity::endPicking();
|
||||||
|
}
|
||||||
|
|
||||||
//assertions
|
//assertions
|
||||||
assertGl();
|
assertGl();
|
||||||
}
|
}
|
||||||
|
@ -157,35 +175,37 @@ void ModelRendererGl::renderMesh(Mesh *mesh,int renderMode) {
|
||||||
glEnable(GL_CULL_FACE);
|
glEnable(GL_CULL_FACE);
|
||||||
}
|
}
|
||||||
|
|
||||||
//set color
|
if(this->colorPickingMode == false) {
|
||||||
if(renderColors) {
|
//set color
|
||||||
Vec4f color(mesh->getDiffuseColor(), mesh->getOpacity());
|
if(renderColors) {
|
||||||
glColor4fv(color.ptr());
|
Vec4f color(mesh->getDiffuseColor(), mesh->getOpacity());
|
||||||
}
|
glColor4fv(color.ptr());
|
||||||
|
}
|
||||||
|
|
||||||
//texture state
|
//texture state
|
||||||
const Texture2DGl *texture= static_cast<const Texture2DGl*>(mesh->getTexture(mtDiffuse));
|
const Texture2DGl *texture= static_cast<const Texture2DGl*>(mesh->getTexture(mtDiffuse));
|
||||||
if(texture != NULL && renderTextures) {
|
if(texture != NULL && renderTextures) {
|
||||||
if(lastTexture != texture->getHandle()){
|
if(lastTexture != texture->getHandle()){
|
||||||
//assert(glIsTexture(texture->getHandle()));
|
//assert(glIsTexture(texture->getHandle()));
|
||||||
//throw megaglest_runtime_error("glIsTexture(texture->getHandle()) == false for texture: " + texture->getPath());
|
//throw megaglest_runtime_error("glIsTexture(texture->getHandle()) == false for texture: " + texture->getPath());
|
||||||
if(glIsTexture(texture->getHandle()) == GL_TRUE) {
|
if(glIsTexture(texture->getHandle()) == GL_TRUE) {
|
||||||
glBindTexture(GL_TEXTURE_2D, texture->getHandle());
|
glBindTexture(GL_TEXTURE_2D, texture->getHandle());
|
||||||
lastTexture= texture->getHandle();
|
lastTexture= texture->getHandle();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
glBindTexture(GL_TEXTURE_2D, 0);
|
glBindTexture(GL_TEXTURE_2D, 0);
|
||||||
lastTexture= 0;
|
lastTexture= 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
else{
|
||||||
else{
|
glBindTexture(GL_TEXTURE_2D, 0);
|
||||||
glBindTexture(GL_TEXTURE_2D, 0);
|
lastTexture= 0;
|
||||||
lastTexture= 0;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if(meshCallback != NULL) {
|
if(meshCallback != NULL) {
|
||||||
meshCallback->execute(mesh);
|
meshCallback->execute(mesh);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//misc vars
|
//misc vars
|
||||||
|
|
|
@ -261,7 +261,7 @@ void ParticleRendererGl::renderModel(GameParticleSystem *ps, ModelRenderer *mr){
|
||||||
glRotatef(angleH, 0.f, 1.f, 0.f);
|
glRotatef(angleH, 0.f, 1.f, 0.f);
|
||||||
|
|
||||||
//render
|
//render
|
||||||
mr->begin(true, true, false);
|
mr->begin(true, true, false, false);
|
||||||
float t = ps->getTween();
|
float t = ps->getTween();
|
||||||
|
|
||||||
if(t < 0.0f || t > 1.0f) {
|
if(t < 0.0f || t > 1.0f) {
|
||||||
|
|
|
@ -1528,15 +1528,18 @@ void BaseColorPickEntity::beginPicking() {
|
||||||
//glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
//glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
//glClear(GL_COLOR_BUFFER_BIT);
|
//glClear(GL_COLOR_BUFFER_BIT);
|
||||||
|
|
||||||
//glDisable(GL_TEXTURE_2D);
|
glPushAttrib(GL_ENABLE_BIT);
|
||||||
//glDisable(GL_FOG);
|
glDisable(GL_TEXTURE_2D);
|
||||||
//glDisable(GL_LIGHTING);
|
glDisable(GL_FOG);
|
||||||
|
glDisable(GL_LIGHTING);
|
||||||
|
glDisable(GL_BLEND);
|
||||||
|
glDisable(GL_MULTISAMPLE);
|
||||||
|
glDisable(GL_DITHER);
|
||||||
|
glDisable(GL_POLYGON_OFFSET_FILL);
|
||||||
|
glDisable(GL_NORMALIZE);
|
||||||
|
|
||||||
//glDisable(GL_BLEND);
|
//glPushAttrib(GL_TEXTURE_2D | GL_LIGHTING | GL_BLEND | GL_MULTISAMPLE | GL_DITHER);
|
||||||
//glDisable(GL_MULTISAMPLE);
|
//glPushAttrib(GL_ENABLE_BIT | GL_LIGHTING_BIT | GL_POLYGON_BIT | GL_CURRENT_BIT | GL_TEXTURE_BIT | GL_NORMALIZE | GL_BLEND | GL_POLYGON_OFFSET_FILL);
|
||||||
//glDisable(GL_DITHER);
|
|
||||||
|
|
||||||
glPushAttrib(GL_TEXTURE_2D | GL_LIGHTING | GL_BLEND | GL_MULTISAMPLE | GL_DITHER);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void BaseColorPickEntity::endPicking() {
|
void BaseColorPickEntity::endPicking() {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user