mirror of
https://github.com/glest/glest-source.git
synced 2025-08-31 19:51:44 +02:00
- a few more optimizations for rendering and removal of junk
- updated version # to beta8
This commit is contained in:
@@ -26,7 +26,7 @@ using namespace Shared::Platform;
|
|||||||
namespace Glest{ namespace Game{
|
namespace Glest{ namespace Game{
|
||||||
|
|
||||||
const string mailString= "contact_game@glest.org";
|
const string mailString= "contact_game@glest.org";
|
||||||
const string glestVersionString= "v3.3.5-beta7.7";
|
const string glestVersionString= "v3.3.5-beta8";
|
||||||
|
|
||||||
string getCrashDumpFileName(){
|
string getCrashDumpFileName(){
|
||||||
return "glest" + glestVersionString + ".dmp";
|
return "glest" + glestVersionString + ".dmp";
|
||||||
|
@@ -208,8 +208,6 @@ Renderer &Renderer::getInstance(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::reinitAll() {
|
void Renderer::reinitAll() {
|
||||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
|
||||||
|
|
||||||
//resources
|
//resources
|
||||||
for(int i=0; i<rsCount; ++i){
|
for(int i=0; i<rsCount; ++i){
|
||||||
//modelManager[i]->init();
|
//modelManager[i]->init();
|
||||||
@@ -217,8 +215,6 @@ void Renderer::reinitAll() {
|
|||||||
//particleManager[i]->init();
|
//particleManager[i]->init();
|
||||||
//fontManager[i]->init();
|
//fontManager[i]->init();
|
||||||
}
|
}
|
||||||
|
|
||||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
|
||||||
}
|
}
|
||||||
// ==================== init ====================
|
// ==================== init ====================
|
||||||
|
|
||||||
@@ -573,7 +569,7 @@ void Renderer::renderMouse2d(int x, int y, int anim, float fade){
|
|||||||
glVertex2i(x+10, y-20);
|
glVertex2i(x+10, y-20);
|
||||||
glEnd();
|
glEnd();
|
||||||
|
|
||||||
//biorder
|
//border
|
||||||
glLineWidth(2);
|
glLineWidth(2);
|
||||||
glBegin(GL_LINE_LOOP);
|
glBegin(GL_LINE_LOOP);
|
||||||
glColor4f(1.f, 0.2f, 0, color1);
|
glColor4f(1.f, 0.2f, 0, color1);
|
||||||
@@ -655,7 +651,6 @@ void Renderer::renderMouse3d() {
|
|||||||
|
|
||||||
float rotateAmount = gui->getSelectedFacing() * 90.f;
|
float rotateAmount = gui->getSelectedFacing() * 90.f;
|
||||||
if(rotateAmount > 0) {
|
if(rotateAmount > 0) {
|
||||||
//if(Socket::enableDebugText) printf("In [%s::%s] rotate unit id = %d amount = %f\n",__FILE__,__FUNCTION__,building->getId(),rotateAmount);
|
|
||||||
glRotatef(rotateAmount, 0.f, 1.f, 0.f);
|
glRotatef(rotateAmount, 0.f, 1.f, 0.f);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -733,7 +728,6 @@ void Renderer::renderConsole(const Console *console,const bool showFullConsole,c
|
|||||||
if(console == NULL) {
|
if(console == NULL) {
|
||||||
throw runtime_error("console == NULL");
|
throw runtime_error("console == NULL");
|
||||||
}
|
}
|
||||||
//SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
|
||||||
|
|
||||||
glPushAttrib(GL_ENABLE_BIT);
|
glPushAttrib(GL_ENABLE_BIT);
|
||||||
glEnable(GL_BLEND);
|
glEnable(GL_BLEND);
|
||||||
@@ -754,9 +748,8 @@ void Renderer::renderConsole(const Console *console,const bool showFullConsole,c
|
|||||||
fontColor,
|
fontColor,
|
||||||
20, i*20+20);
|
20, i*20+20);
|
||||||
}
|
}
|
||||||
//SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
|
||||||
}
|
}
|
||||||
else if(showMenuConsole){
|
else if(showMenuConsole) {
|
||||||
for(int i=0; i<console->getStoredLineCount() && i<maxConsoleLines; ++i){
|
for(int i=0; i<console->getStoredLineCount() && i<maxConsoleLines; ++i){
|
||||||
renderTextShadow(
|
renderTextShadow(
|
||||||
console->getStoredLine(i),
|
console->getStoredLine(i),
|
||||||
@@ -764,10 +757,9 @@ void Renderer::renderConsole(const Console *console,const bool showFullConsole,c
|
|||||||
fontColor,
|
fontColor,
|
||||||
20, i*20+20);
|
20, i*20+20);
|
||||||
}
|
}
|
||||||
//SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
|
||||||
}
|
}
|
||||||
else{
|
else {
|
||||||
for(int i=0; i<console->getLineCount(); ++i){
|
for(int i=0; i<console->getLineCount(); ++i) {
|
||||||
renderTextShadow(
|
renderTextShadow(
|
||||||
console->getLine(i),
|
console->getLine(i),
|
||||||
CoreData::getInstance().getConsoleFont(),
|
CoreData::getInstance().getConsoleFont(),
|
||||||
@@ -924,31 +916,21 @@ void Renderer::renderText(const string &text, const Font2D *font, const Vec3f &c
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::renderTextShadow(const string &text, const Font2D *font,const Vec4f &color, int x, int y, bool centered){
|
void Renderer::renderTextShadow(const string &text, const Font2D *font,const Vec4f &color, int x, int y, bool centered){
|
||||||
//SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
|
||||||
|
|
||||||
if(font == NULL) {
|
if(font == NULL) {
|
||||||
throw runtime_error("font == NULL");
|
throw runtime_error("font == NULL");
|
||||||
}
|
}
|
||||||
|
|
||||||
//SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
|
||||||
|
|
||||||
glPushAttrib(GL_CURRENT_BIT);
|
glPushAttrib(GL_CURRENT_BIT);
|
||||||
|
|
||||||
Vec2i pos= centered? computeCenteredPos(text, font, x, y): Vec2i(x, y);
|
Vec2i pos= centered? computeCenteredPos(text, font, x, y): Vec2i(x, y);
|
||||||
|
|
||||||
if(color.w<0.5)
|
if(color.w<0.5) {
|
||||||
{
|
|
||||||
//SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
|
||||||
textRenderer->begin(font);
|
textRenderer->begin(font);
|
||||||
glColor3f(0.0f, 0.0f, 0.0f);
|
glColor3f(0.0f, 0.0f, 0.0f);
|
||||||
//SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
|
||||||
textRenderer->render(text, pos.x-1.0f, pos.y-1.0f);
|
textRenderer->render(text, pos.x-1.0f, pos.y-1.0f);
|
||||||
}
|
}
|
||||||
//SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
|
||||||
glColor3f(color.x,color.y,color.z);
|
glColor3f(color.x,color.y,color.z);
|
||||||
//SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
|
||||||
textRenderer->render(text, pos.x, pos.y);
|
textRenderer->render(text, pos.x, pos.y);
|
||||||
//SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
|
||||||
textRenderer->end();
|
textRenderer->end();
|
||||||
|
|
||||||
glPopAttrib();
|
glPopAttrib();
|
||||||
@@ -957,7 +939,6 @@ void Renderer::renderTextShadow(const string &text, const Font2D *font,const Vec
|
|||||||
// ============= COMPONENTS =============================
|
// ============= COMPONENTS =============================
|
||||||
|
|
||||||
void Renderer::renderLabel(const GraphicLabel *label){
|
void Renderer::renderLabel(const GraphicLabel *label){
|
||||||
|
|
||||||
glPushAttrib(GL_ENABLE_BIT);
|
glPushAttrib(GL_ENABLE_BIT);
|
||||||
glEnable(GL_BLEND);
|
glEnable(GL_BLEND);
|
||||||
|
|
||||||
@@ -980,7 +961,6 @@ void Renderer::renderLabel(const GraphicLabel *label){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::renderButton(const GraphicButton *button){
|
void Renderer::renderButton(const GraphicButton *button){
|
||||||
|
|
||||||
int x= button->getX();
|
int x= button->getX();
|
||||||
int y= button->getY();
|
int y= button->getY();
|
||||||
int h= button->getH();
|
int h= button->getH();
|
||||||
@@ -1066,9 +1046,6 @@ void Renderer::renderButton(const GraphicButton *button){
|
|||||||
renderText(
|
renderText(
|
||||||
button->getText(), button->getFont(),disabledTextColor,
|
button->getText(), button->getFont(),disabledTextColor,
|
||||||
x+w/2, y+h/2, true);
|
x+w/2, y+h/2, true);
|
||||||
// renderText(
|
|
||||||
// button->getText(), button->getFont(), 0.2f,
|
|
||||||
// x+w/2, y+h/2, true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
glPopAttrib();
|
glPopAttrib();
|
||||||
@@ -1202,9 +1179,7 @@ void Renderer::renderSurface(){
|
|||||||
|
|
||||||
PosQuadIterator pqi(map, scaledQuad);
|
PosQuadIterator pqi(map, scaledQuad);
|
||||||
while(pqi.next()){
|
while(pqi.next()){
|
||||||
|
|
||||||
const Vec2i &pos= pqi.getPos();
|
const Vec2i &pos= pqi.getPos();
|
||||||
|
|
||||||
if(mapBounds.isInside(pos)){
|
if(mapBounds.isInside(pos)){
|
||||||
|
|
||||||
SurfaceCell *tc00= map->getSurfaceCell(pos.x, pos.y);
|
SurfaceCell *tc00= map->getSurfaceCell(pos.x, pos.y);
|
||||||
@@ -1262,82 +1237,77 @@ void Renderer::renderSurface(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::renderObjects(const int renderFps, const int worldFrameCount) {
|
void Renderer::renderObjects(const int renderFps, const int worldFrameCount) {
|
||||||
if(renderFps >= 0 && renderFps < MIN_RENDER_FPS_ALLOWED) {
|
const World *world= game->getWorld();
|
||||||
renderObjectsFast();
|
const Map *map= world->getMap();
|
||||||
|
|
||||||
|
assertGl();
|
||||||
|
const Texture2D *fowTex= world->getMinimap()->getFowTexture();
|
||||||
|
Vec3f baseFogColor= world->getTileset()->getFogColor()*computeLightColor(world->getTimeFlow()->getTime());
|
||||||
|
|
||||||
|
glPushAttrib(GL_ENABLE_BIT | GL_COLOR_BUFFER_BIT | GL_FOG_BIT | GL_LIGHTING_BIT | GL_TEXTURE_BIT);
|
||||||
|
|
||||||
|
if(shadows==sShadowMapping){
|
||||||
|
glActiveTexture(shadowTexUnit);
|
||||||
|
glEnable(GL_TEXTURE_2D);
|
||||||
|
|
||||||
|
glBindTexture(GL_TEXTURE_2D, shadowMapHandle);
|
||||||
|
|
||||||
|
static_cast<ModelRendererGl*>(modelRenderer)->setDuplicateTexCoords(true);
|
||||||
|
enableProjectiveTexturing();
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
const World *world= game->getWorld();
|
|
||||||
const Map *map= world->getMap();
|
|
||||||
|
|
||||||
assertGl();
|
glActiveTexture(baseTexUnit);
|
||||||
const Texture2D *fowTex= world->getMinimap()->getFowTexture();
|
|
||||||
Vec3f baseFogColor= world->getTileset()->getFogColor()*computeLightColor(world->getTimeFlow()->getTime());
|
|
||||||
|
|
||||||
glPushAttrib(GL_ENABLE_BIT | GL_COLOR_BUFFER_BIT | GL_FOG_BIT | GL_LIGHTING_BIT | GL_TEXTURE_BIT);
|
glEnable(GL_COLOR_MATERIAL);
|
||||||
|
glAlphaFunc(GL_GREATER, 0.5f);
|
||||||
|
|
||||||
if(shadows==sShadowMapping){
|
modelRenderer->begin(true, true, false);
|
||||||
glActiveTexture(shadowTexUnit);
|
int thisTeamIndex= world->getThisTeamIndex();
|
||||||
glEnable(GL_TEXTURE_2D);
|
|
||||||
|
|
||||||
glBindTexture(GL_TEXTURE_2D, shadowMapHandle);
|
std::vector<RenderEntity> vctEntity;
|
||||||
|
|
||||||
static_cast<ModelRendererGl*>(modelRenderer)->setDuplicateTexCoords(true);
|
PosQuadIterator pqi(map, visibleQuad, Map::cellScale);
|
||||||
enableProjectiveTexturing();
|
while(pqi.next()){
|
||||||
}
|
const Vec2i &pos= pqi.getPos();
|
||||||
|
bool isPosVisible = map->isInside(pos.x, pos.y);
|
||||||
|
if(isPosVisible == true) {
|
||||||
|
const Vec2i &mapPos = Map::toSurfCoords(pos);
|
||||||
|
SurfaceCell *sc= map->getSurfaceCell(mapPos.x, mapPos.y);
|
||||||
|
Object *o= sc->getObject();
|
||||||
|
bool isExplored = (sc->isExplored(thisTeamIndex) && o!=NULL);
|
||||||
|
//bool isVisible = (sc->isVisible(thisTeamIndex) && o!=NULL);
|
||||||
|
bool isVisible = true;
|
||||||
|
|
||||||
glActiveTexture(baseTexUnit);
|
if(isExplored == true && isVisible == true) {
|
||||||
|
|
||||||
glEnable(GL_COLOR_MATERIAL);
|
|
||||||
glAlphaFunc(GL_GREATER, 0.5f);
|
|
||||||
|
|
||||||
modelRenderer->begin(true, true, false);
|
|
||||||
int thisTeamIndex= world->getThisTeamIndex();
|
|
||||||
|
|
||||||
std::vector<RenderEntity> vctEntity;
|
|
||||||
|
|
||||||
PosQuadIterator pqi(map, visibleQuad, Map::cellScale);
|
|
||||||
while(pqi.next()){
|
|
||||||
const Vec2i &pos= pqi.getPos();
|
|
||||||
bool isPosVisible = map->isInside(pos.x, pos.y);
|
|
||||||
if(isPosVisible == true) {
|
|
||||||
Vec2i mapPos = Map::toSurfCoords(pos);
|
|
||||||
SurfaceCell *sc= map->getSurfaceCell(mapPos.x, mapPos.y);
|
|
||||||
Object *o= sc->getObject();
|
|
||||||
bool isExplored = (sc->isExplored(thisTeamIndex) && o!=NULL);
|
|
||||||
//bool isVisible = (sc->isVisible(thisTeamIndex) && o!=NULL);
|
|
||||||
bool isVisible = true;
|
|
||||||
|
|
||||||
if(isExplored == true && isVisible == true) {
|
|
||||||
/*
|
/*
|
||||||
//
|
//
|
||||||
//if(renderFps >= 0 && renderFps < MIN_RENDER_FPS_ALLOWED) {
|
//if(renderFps >= 0 && renderFps < MIN_RENDER_FPS_ALLOWED) {
|
||||||
// int renderLag = worldFrameCount - o->getLastRenderFrame();
|
// int renderLag = worldFrameCount - o->getLastRenderFrame();
|
||||||
// if(renderLag > MIN_RENDER_LAG_ALLOWED) {
|
// if(renderLag > MIN_RENDER_LAG_ALLOWED) {
|
||||||
// vctEntity.push_back(RenderEntity(retObject,o,mapPos,NULL));
|
// vctEntity.push_back(RenderEntity(retObject,o,mapPos,NULL));
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
//else {
|
//else {
|
||||||
//
|
//
|
||||||
vctEntity.push_back(RenderEntity(retObject,o,mapPos,NULL));
|
vctEntity.push_back(RenderEntity(retObject,o,mapPos,NULL));
|
||||||
//}
|
//}
|
||||||
*/
|
*/
|
||||||
const Model *objModel= o->getModel();
|
const Model *objModel= o->getModel();
|
||||||
if(objModel != NULL) {
|
if(objModel != NULL) {
|
||||||
objModel->updateInterpolationData(0.f, true);
|
objModel->updateInterpolationData(0.f, true);
|
||||||
}
|
|
||||||
renderObject(o,mapPos,baseFogColor,worldFrameCount);
|
|
||||||
}
|
}
|
||||||
|
renderObject(o,mapPos,baseFogColor,worldFrameCount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//modelRenderer->begin(true, true, false);
|
|
||||||
//renderObjectList(vctEntity,baseFogColor,renderFps, worldFrameCount);
|
|
||||||
modelRenderer->end();
|
|
||||||
|
|
||||||
//restore
|
|
||||||
static_cast<ModelRendererGl*>(modelRenderer)->setDuplicateTexCoords(true);
|
|
||||||
glPopAttrib();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//modelRenderer->begin(true, true, false);
|
||||||
|
//renderObjectList(vctEntity,baseFogColor,renderFps, worldFrameCount);
|
||||||
|
modelRenderer->end();
|
||||||
|
|
||||||
|
//restore
|
||||||
|
static_cast<ModelRendererGl*>(modelRenderer)->setDuplicateTexCoords(true);
|
||||||
|
glPopAttrib();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::renderObjectList(std::vector<RenderEntity> &vctEntity,const Vec3f &baseFogColor,const int renderFps, const int worldFrameCount) {
|
void Renderer::renderObjectList(std::vector<RenderEntity> &vctEntity,const Vec3f &baseFogColor,const int renderFps, const int worldFrameCount) {
|
||||||
@@ -1389,7 +1359,7 @@ void Renderer::renderObject(RenderEntity &entity,const Vec3f &baseFogColor,const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::renderObject(Object *o,Vec2i &mapPos,const Vec3f &baseFogColor,const int worldFrameCount) {
|
void Renderer::renderObject(Object *o,const Vec2i &mapPos,const Vec3f &baseFogColor,const int worldFrameCount) {
|
||||||
if(o != NULL) {
|
if(o != NULL) {
|
||||||
const Model *objModel= o->getModel();
|
const Model *objModel= o->getModel();
|
||||||
if(objModel != NULL) {
|
if(objModel != NULL) {
|
||||||
@@ -1412,8 +1382,6 @@ void Renderer::renderObject(Object *o,Vec2i &mapPos,const Vec3f &baseFogColor,co
|
|||||||
glTranslatef(v.x, v.y, v.z);
|
glTranslatef(v.x, v.y, v.z);
|
||||||
glRotatef(o->getRotation(), 0.f, 1.f, 0.f);
|
glRotatef(o->getRotation(), 0.f, 1.f, 0.f);
|
||||||
|
|
||||||
//objModel->updateInterpolationData(0.f, true);
|
|
||||||
|
|
||||||
modelRenderer->render(objModel);
|
modelRenderer->render(objModel);
|
||||||
o->setLastRenderFrame(worldFrameCount);
|
o->setLastRenderFrame(worldFrameCount);
|
||||||
|
|
||||||
@@ -1841,7 +1809,8 @@ void Renderer::renderWaterEffects(){
|
|||||||
|
|
||||||
//render only if visible
|
//render only if visible
|
||||||
Vec2i intPos= Vec2i(static_cast<int>(ws->getPos().x), static_cast<int>(ws->getPos().y));
|
Vec2i intPos= Vec2i(static_cast<int>(ws->getPos().x), static_cast<int>(ws->getPos().y));
|
||||||
if(map->getSurfaceCell(Map::toSurfCoords(intPos))->isVisible(world->getThisTeamIndex())){
|
const Vec2i &mapPos = Map::toSurfCoords(intPos);
|
||||||
|
if(map->getSurfaceCell(mapPos)->isVisible(world->getThisTeamIndex())){
|
||||||
|
|
||||||
float scale= ws->getAnim()*ws->getSize();
|
float scale= ws->getAnim()*ws->getSize();
|
||||||
|
|
||||||
@@ -2332,7 +2301,6 @@ void Renderer::computeSelected(Selection::UnitContainer &units, const Vec2i &pos
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ==================== shadows ====================
|
// ==================== shadows ====================
|
||||||
|
|
||||||
void Renderer::renderShadowsToTexture(const int renderFps){
|
void Renderer::renderShadowsToTexture(const int renderFps){
|
||||||
@@ -2737,28 +2705,7 @@ void Renderer::renderUnitsFast(){
|
|||||||
// glPushName(j);
|
// glPushName(j);
|
||||||
Unit *unit= world->getFaction(i)->getUnit(j);
|
Unit *unit= world->getFaction(i)->getUnit(j);
|
||||||
if(world->toRenderUnit(unit, visibleQuad)) {
|
if(world->toRenderUnit(unit, visibleQuad)) {
|
||||||
Vec2i mapPos = Vec2i(i,j);
|
//Vec2i mapPos = Vec2i(i,j);
|
||||||
/*
|
|
||||||
glMatrixMode(GL_MODELVIEW);
|
|
||||||
|
|
||||||
//debuxar modelo
|
|
||||||
glPushMatrix();
|
|
||||||
|
|
||||||
//translate
|
|
||||||
Vec3f currVec= unit->getCurrVectorFlat();
|
|
||||||
glTranslatef(currVec.x, currVec.y, currVec.z);
|
|
||||||
|
|
||||||
//rotate
|
|
||||||
glRotatef(unit->getRotation(), 0.f, 1.f, 0.f);
|
|
||||||
|
|
||||||
//render
|
|
||||||
const Model *model= unit->getCurrentModel();
|
|
||||||
model->updateInterpolationVertices(unit->getAnimProgress(), unit->isAlive());
|
|
||||||
modelRenderer->render(model);
|
|
||||||
|
|
||||||
glPopMatrix();
|
|
||||||
*/
|
|
||||||
|
|
||||||
//vctEntity.push_back(RenderEntity(retUnitFast,NULL,mapPos,unit));
|
//vctEntity.push_back(RenderEntity(retUnitFast,NULL,mapPos,unit));
|
||||||
|
|
||||||
const Model *model= unit->getCurrentModel();
|
const Model *model= unit->getCurrentModel();
|
||||||
@@ -2766,7 +2713,7 @@ void Renderer::renderUnitsFast(){
|
|||||||
model->updateInterpolationVertices(unit->getAnimProgress(), unit->isAlive());
|
model->updateInterpolationVertices(unit->getAnimProgress(), unit->isAlive());
|
||||||
}
|
}
|
||||||
|
|
||||||
renderUnitFast(unit, mapPos);
|
renderUnitFast(unit, i,j);
|
||||||
}
|
}
|
||||||
//glPopName();
|
//glPopName();
|
||||||
}
|
}
|
||||||
@@ -2793,15 +2740,15 @@ void Renderer::renderUnitFastList(std::vector<RenderEntity> &vctEntity) {
|
|||||||
void Renderer::renderUnitFast(RenderEntity &entity) {
|
void Renderer::renderUnitFast(RenderEntity &entity) {
|
||||||
Unit *unit = entity.unit;
|
Unit *unit = entity.unit;
|
||||||
if(unit != NULL) {
|
if(unit != NULL) {
|
||||||
renderUnitFast(unit, entity.mapPos);
|
renderUnitFast(unit, entity.mapPos.x,entity.mapPos.y);
|
||||||
entity.setState(resRendered);
|
entity.setState(resRendered);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::renderUnitFast(Unit *unit, Vec2i &mapPos) {
|
void Renderer::renderUnitFast(Unit *unit, int x, int y) {
|
||||||
if(unit != NULL) {
|
if(unit != NULL) {
|
||||||
glPushName(mapPos.x);
|
glPushName(x);
|
||||||
glPushName(mapPos.y);
|
glPushName(y);
|
||||||
|
|
||||||
glMatrixMode(GL_MODELVIEW);
|
glMatrixMode(GL_MODELVIEW);
|
||||||
|
|
||||||
@@ -2869,7 +2816,7 @@ void Renderer::renderObjectsFast() {
|
|||||||
while(pqi.next()){
|
while(pqi.next()){
|
||||||
const Vec2i &pos= pqi.getPos();
|
const Vec2i &pos= pqi.getPos();
|
||||||
if(map->isInside(pos)){
|
if(map->isInside(pos)){
|
||||||
Vec2i mapPos = Map::toSurfCoords(pos);
|
const Vec2i &mapPos = Map::toSurfCoords(pos);
|
||||||
SurfaceCell *sc= map->getSurfaceCell(mapPos);
|
SurfaceCell *sc= map->getSurfaceCell(mapPos);
|
||||||
Object *o= sc->getObject();
|
Object *o= sc->getObject();
|
||||||
bool isExplored = (sc->isExplored(thisTeamIndex) && o!=NULL);
|
bool isExplored = (sc->isExplored(thisTeamIndex) && o!=NULL);
|
||||||
@@ -2878,7 +2825,7 @@ void Renderer::renderObjectsFast() {
|
|||||||
|
|
||||||
if(isExplored == true && isVisible == true) {
|
if(isExplored == true && isVisible == true) {
|
||||||
const Model *objModel= sc->getObject()->getModel();
|
const Model *objModel= sc->getObject()->getModel();
|
||||||
Vec3f v= o->getPos();
|
const Vec3f &v= o->getConstPos();
|
||||||
|
|
||||||
glMatrixMode(GL_MODELVIEW);
|
glMatrixMode(GL_MODELVIEW);
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
|
@@ -334,7 +334,7 @@ public:
|
|||||||
void renderSurface();
|
void renderSurface();
|
||||||
void renderObjects(const int renderFps, const int worldFrameCount);
|
void renderObjects(const int renderFps, const int worldFrameCount);
|
||||||
void renderObject(RenderEntity &entity,const Vec3f &baseFogColor,const int renderFps, const int worldFrameCount);
|
void renderObject(RenderEntity &entity,const Vec3f &baseFogColor,const int renderFps, const int worldFrameCount);
|
||||||
void renderObject(Object *o,Vec2i &mapPos,const Vec3f &baseFogColor,const int worldFrameCount);
|
void renderObject(Object *o,const Vec2i &mapPos,const Vec3f &baseFogColor,const int worldFrameCount);
|
||||||
void prepareObjectForRender(RenderEntity &entity);
|
void prepareObjectForRender(RenderEntity &entity);
|
||||||
void renderObjectList(std::vector<RenderEntity> &vctEntity,const Vec3f &baseFogColor,const int renderFps, const int worldFrameCount);
|
void renderObjectList(std::vector<RenderEntity> &vctEntity,const Vec3f &baseFogColor,const int renderFps, const int worldFrameCount);
|
||||||
|
|
||||||
@@ -401,7 +401,7 @@ private:
|
|||||||
void renderUnitsFast();
|
void renderUnitsFast();
|
||||||
void renderUnitFastList(std::vector<RenderEntity> &vctEntity);
|
void renderUnitFastList(std::vector<RenderEntity> &vctEntity);
|
||||||
void renderUnitFast(RenderEntity &entity);
|
void renderUnitFast(RenderEntity &entity);
|
||||||
void renderUnitFast(Unit *unit, Vec2i &mapPos);
|
void renderUnitFast(Unit *unit, int x, int y);
|
||||||
void prepareUnitFastForRender(RenderEntity &entity);
|
void prepareUnitFastForRender(RenderEntity &entity);
|
||||||
|
|
||||||
//gl requirements
|
//gl requirements
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
// ==============================================================
|
// ==============================================================
|
||||||
// This file is part of Glest (www.glest.org)
|
// This file is part of Glest (www.glest.org)
|
||||||
//
|
//
|
||||||
// Copyright (C) 2001-2008 Marti<EFBFBD>o Figueroa
|
// Copyright (C) 2001-2008 Martio Figueroa
|
||||||
//
|
//
|
||||||
// You can redistribute this code and/or modify it under
|
// You can redistribute this code and/or modify it under
|
||||||
// the terms of the GNU General Public License as published
|
// the terms of the GNU General Public License as published
|
||||||
@@ -222,8 +222,8 @@ public:
|
|||||||
void computeInterpolatedHeights();
|
void computeInterpolatedHeights();
|
||||||
|
|
||||||
//static
|
//static
|
||||||
static Vec2i toSurfCoords(Vec2i unitPos) {return unitPos/cellScale;}
|
static Vec2i toSurfCoords(const Vec2i &unitPos) {return unitPos / cellScale;}
|
||||||
static Vec2i toUnitCoords(Vec2i surfPos) {return surfPos*cellScale;}
|
static Vec2i toUnitCoords(const Vec2i &surfPos) {return surfPos * cellScale;}
|
||||||
static string getMapPath(const string &mapName, string scenarioDir="", bool errorOnNotFound=true);
|
static string getMapPath(const string &mapName, string scenarioDir="", bool errorOnNotFound=true);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
Reference in New Issue
Block a user