diff options
Diffstat (limited to '')
53 files changed, 413 insertions, 574 deletions
diff --git a/linden/indra/newview/app_settings/colors_base.xml b/linden/indra/newview/app_settings/colors_base.xml index d793116..42b119c 100644 --- a/linden/indra/newview/app_settings/colors_base.xml +++ b/linden/indra/newview/app_settings/colors_base.xml | |||
@@ -48,7 +48,7 @@ | |||
48 | 48 | ||
49 | <!-- TEXTFIELDS --> | 49 | <!-- TEXTFIELDS --> |
50 | <TextBgFocusColor value="255, 255, 255, 255" /> <!-- Text field background when receiving input (focused) --> | 50 | <TextBgFocusColor value="255, 255, 255, 255" /> <!-- Text field background when receiving input (focused) --> |
51 | <TextBgReadOnlyColor value="210, 220, 230, 255" /> <!-- Text field background when read-only --> | 51 | <TextBgReadOnlyColor value="255, 255, 255, 140" /> <!-- Text field background when read-only --> |
52 | <TextBgWriteableColor value="255, 255, 255, 255" /> <!-- Text field background when not receiving input (unfocused) --> | 52 | <TextBgWriteableColor value="255, 255, 255, 255" /> <!-- Text field background when not receiving input (unfocused) --> |
53 | <TextCursorColor value="0, 0, 0, 255" /> | 53 | <TextCursorColor value="0, 0, 0, 255" /> |
54 | <TextFgColor value="45, 48, 45, 255" /> | 54 | <TextFgColor value="45, 48, 45, 255" /> |
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml index 63d429f..7be1db3 100644 --- a/linden/indra/newview/app_settings/settings.xml +++ b/linden/indra/newview/app_settings/settings.xml | |||
@@ -9759,17 +9759,6 @@ | |||
9759 | <integer>0</integer> | 9759 | <integer>0</integer> |
9760 | </array> | 9760 | </array> |
9761 | </map> | 9761 | </map> |
9762 | <key>AlertedUnsupportedHardware</key> | ||
9763 | <map> | ||
9764 | <key>Comment</key> | ||
9765 | <string>Toggle that lets us tell the user he's on old hardware only once</string> | ||
9766 | <key>Persist</key> | ||
9767 | <integer>1</integer> | ||
9768 | <key>Type</key> | ||
9769 | <string>Boolean</string> | ||
9770 | <key>Value</key> | ||
9771 | <integer>0</integer> | ||
9772 | </map> | ||
9773 | <key>RenderFastAlpha</key> | 9762 | <key>RenderFastAlpha</key> |
9774 | <map> | 9763 | <map> |
9775 | <key>Comment</key> | 9764 | <key>Comment</key> |
diff --git a/linden/indra/newview/llappviewer.cpp b/linden/indra/newview/llappviewer.cpp index 7c71e46..4a9a158 100644 --- a/linden/indra/newview/llappviewer.cpp +++ b/linden/indra/newview/llappviewer.cpp | |||
@@ -64,6 +64,7 @@ | |||
64 | #include "llurldispatcher.h" | 64 | #include "llurldispatcher.h" |
65 | #include "llurlhistory.h" | 65 | #include "llurlhistory.h" |
66 | #include "llfirstuse.h" | 66 | #include "llfirstuse.h" |
67 | #include "llglimmediate.h" | ||
67 | 68 | ||
68 | #include "llweb.h" | 69 | #include "llweb.h" |
69 | #include "llsecondlifeurls.h" | 70 | #include "llsecondlifeurls.h" |
@@ -409,10 +410,11 @@ static void settings_to_globals() | |||
409 | static void settings_modify() | 410 | static void settings_modify() |
410 | { | 411 | { |
411 | LLRenderTarget::sUseFBO = gSavedSettings.getBOOL("RenderUseFBO"); | 412 | LLRenderTarget::sUseFBO = gSavedSettings.getBOOL("RenderUseFBO"); |
412 | LLVOAvatar::sUseImpostors = FALSE; //gSavedSettings.getBOOL("RenderUseImpostors"); | 413 | LLVOAvatar::sUseImpostors = gSavedSettings.getBOOL("RenderUseImpostors"); |
413 | LLVOSurfacePatch::sLODFactor = gSavedSettings.getF32("RenderTerrainLODFactor"); | 414 | LLVOSurfacePatch::sLODFactor = gSavedSettings.getF32("RenderTerrainLODFactor"); |
414 | LLVOSurfacePatch::sLODFactor *= LLVOSurfacePatch::sLODFactor; //sqaure lod factor to get exponential range of [1,4] | 415 | LLVOSurfacePatch::sLODFactor *= LLVOSurfacePatch::sLODFactor; //sqaure lod factor to get exponential range of [1,4] |
415 | 416 | gGL.setClever(gSavedSettings.getBOOL("RenderUseCleverUI")); | |
417 | |||
416 | #if LL_VECTORIZE | 418 | #if LL_VECTORIZE |
417 | if (gSysCPU.hasAltivec()) | 419 | if (gSysCPU.hasAltivec()) |
418 | { | 420 | { |
@@ -767,15 +769,6 @@ bool LLAppViewer::init() | |||
767 | return 1; | 769 | return 1; |
768 | } | 770 | } |
769 | 771 | ||
770 | #if LL_DARWIN | ||
771 | // Display the release notes for the current version | ||
772 | if(!gHideLinks && gCurrentVersion != gLastRunVersion) | ||
773 | { | ||
774 | // Current version and last run version don't match exactly. Display the release notes. | ||
775 | DisplayReleaseNotes(); | ||
776 | } | ||
777 | #endif | ||
778 | |||
779 | // | 772 | // |
780 | // Initialize the window | 773 | // Initialize the window |
781 | // | 774 | // |
@@ -814,51 +807,55 @@ bool LLAppViewer::init() | |||
814 | return 0; | 807 | return 0; |
815 | } | 808 | } |
816 | 809 | ||
817 | // alert the user if they are using unsupported hardware | 810 | |
818 | if(!gSavedSettings.getBOOL("AlertedUnsupportedHardware")) | 811 | bool unsupported = false; |
819 | { | 812 | LLString::format_map_t args; |
820 | bool unsupported = false; | 813 | LLString minSpecs; |
821 | LLString::format_map_t args; | ||
822 | LLString minSpecs; | ||
823 | 814 | ||
824 | // get cpu data from xml | 815 | // get cpu data from xml |
825 | std::stringstream minCPUString(LLAlertDialog::getTemplateMessage("UnsupportedCPUAmount")); | 816 | std::stringstream minCPUString(LLAlertDialog::getTemplateMessage("UnsupportedCPUAmount")); |
826 | S32 minCPU = 0; | 817 | S32 minCPU = 0; |
827 | minCPUString >> minCPU; | 818 | minCPUString >> minCPU; |
828 | 819 | ||
829 | // get RAM data from XML | 820 | // get RAM data from XML |
830 | std::stringstream minRAMString(LLAlertDialog::getTemplateMessage("UnsupportedRAMAmount")); | 821 | std::stringstream minRAMString(LLAlertDialog::getTemplateMessage("UnsupportedRAMAmount")); |
831 | U64 minRAM = 0; | 822 | U64 minRAM = 0; |
832 | minRAMString >> minRAM; | 823 | minRAMString >> minRAM; |
833 | minRAM = minRAM * 1024 * 1024; | 824 | minRAM = minRAM * 1024 * 1024; |
834 | 825 | ||
835 | if(!LLFeatureManager::getInstance()->isGPUSupported()) | 826 | if(!LLFeatureManager::getInstance()->isGPUSupported() && LLFeatureManager::getInstance()->getGPUClass() != GPU_CLASS_UNKNOWN) |
836 | { | 827 | { |
837 | minSpecs += LLAlertDialog::getTemplateMessage("UnsupportedGPU"); | 828 | minSpecs += LLAlertDialog::getTemplateMessage("UnsupportedGPU"); |
838 | minSpecs += "\n"; | 829 | minSpecs += "\n"; |
839 | unsupported = true; | 830 | unsupported = true; |
840 | } | 831 | } |
841 | if(gSysCPU.getMhz() < minCPU) | 832 | if(gSysCPU.getMhz() < minCPU) |
842 | { | 833 | { |
843 | minSpecs += LLAlertDialog::getTemplateMessage("UnsupportedCPU"); | 834 | minSpecs += LLAlertDialog::getTemplateMessage("UnsupportedCPU"); |
844 | minSpecs += "\n"; | 835 | minSpecs += "\n"; |
845 | unsupported = true; | 836 | unsupported = true; |
846 | } | 837 | } |
847 | if(gSysMemory.getPhysicalMemoryClamped() < minRAM) | 838 | if(gSysMemory.getPhysicalMemoryClamped() < minRAM) |
848 | { | 839 | { |
849 | minSpecs += LLAlertDialog::getTemplateMessage("UnsupportedRAM"); | 840 | minSpecs += LLAlertDialog::getTemplateMessage("UnsupportedRAM"); |
850 | minSpecs += "\n"; | 841 | minSpecs += "\n"; |
851 | unsupported = true; | 842 | unsupported = true; |
852 | } | 843 | } |
853 | 844 | ||
854 | if(unsupported) | 845 | if (LLFeatureManager::getInstance()->getGPUClass() == GPU_CLASS_UNKNOWN) |
846 | { | ||
847 | gViewerWindow->alertXml("UnknownGPU"); | ||
848 | } | ||
849 | |||
850 | if(unsupported) | ||
851 | { | ||
852 | if(!gSavedSettings.controlExists("WarnUnsupportedHardware") | ||
853 | || gSavedSettings.getBOOL("WarnUnsupportedHardware")) | ||
855 | { | 854 | { |
856 | args["MINSPECS"] = minSpecs; | 855 | args["MINSPECS"] = minSpecs; |
857 | gViewerWindow->alertXml("UnsupportedHardware", args ); | 856 | gViewerWindow->alertXml("UnsupportedHardware", args ); |
858 | |||
859 | // turn off flag | ||
860 | gSavedSettings.setBOOL("AlertedUnsupportedHardware", TRUE); | ||
861 | } | 857 | } |
858 | |||
862 | } | 859 | } |
863 | 860 | ||
864 | // Save the current version to the prefs file | 861 | // Save the current version to the prefs file |
@@ -1445,10 +1442,13 @@ void LLAppViewer::loadSettingsFromDirectory(ELLPath path_index) | |||
1445 | 1442 | ||
1446 | LLString full_settings_path = gDirUtilp->getExpandedFilename(path_index, settings_file); | 1443 | LLString full_settings_path = gDirUtilp->getExpandedFilename(path_index, settings_file); |
1447 | 1444 | ||
1448 | if(settings_name == sGlobalSettingsName) | 1445 | if(settings_name == sGlobalSettingsName |
1446 | && path_index == LL_PATH_USER_SETTINGS) | ||
1449 | { | 1447 | { |
1450 | // The non-persistent setting, ClientSettingsFile, specifies a | 1448 | // The non-persistent setting, ClientSettingsFile, specifies a |
1451 | // custom name to use for the global settings file. | 1449 | // custom name to use for the global settings file. |
1450 | // Only apply this setting if this method is setting the 'Global' | ||
1451 | // settings from the user_settings path. | ||
1452 | std::string custom_path; | 1452 | std::string custom_path; |
1453 | if(gSettings[sGlobalSettingsName]->controlExists("ClientSettingsFile")) | 1453 | if(gSettings[sGlobalSettingsName]->controlExists("ClientSettingsFile")) |
1454 | { | 1454 | { |
diff --git a/linden/indra/newview/llcubemap.cpp b/linden/indra/newview/llcubemap.cpp index e11f058..31937ba 100644 --- a/linden/indra/newview/llcubemap.cpp +++ b/linden/indra/newview/llcubemap.cpp | |||
@@ -185,12 +185,19 @@ void LLCubeMap::bind() | |||
185 | ) | 185 | ) |
186 | { | 186 | { |
187 | // We assume that if they have cube mapping, they have multitexturing. | 187 | // We assume that if they have cube mapping, they have multitexturing. |
188 | glActiveTextureARB(GL_TEXTURE0_ARB + mTextureStage); | 188 | if (mTextureStage > 0) |
189 | { | ||
190 | glActiveTextureARB(GL_TEXTURE0_ARB + mTextureStage); | ||
191 | } | ||
189 | glEnable(GL_TEXTURE_CUBE_MAP_ARB); | 192 | glEnable(GL_TEXTURE_CUBE_MAP_ARB); |
190 | glBindTexture(GL_TEXTURE_CUBE_MAP_ARB, mImages[0]->getTexName()); | 193 | glBindTexture(GL_TEXTURE_CUBE_MAP_ARB, mImages[0]->getTexName()); |
191 | 194 | ||
192 | glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR); | 195 | glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR); |
193 | glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MIN_FILTER, (use_cube_mipmaps? GL_LINEAR_MIPMAP_LINEAR : GL_LINEAR)); | 196 | glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MIN_FILTER, (use_cube_mipmaps? GL_LINEAR_MIPMAP_LINEAR : GL_LINEAR)); |
197 | if (mTextureStage > 0) | ||
198 | { | ||
199 | glActiveTextureARB(GL_TEXTURE0_ARB); | ||
200 | } | ||
194 | } | 201 | } |
195 | else | 202 | else |
196 | { | 203 | { |
@@ -212,9 +219,17 @@ void LLCubeMap::enableTexture(S32 stage) | |||
212 | //&& LLFeatureManager::getInstance()->isFeatureAvailable("RenderCubeMap") | 219 | //&& LLFeatureManager::getInstance()->isFeatureAvailable("RenderCubeMap") |
213 | ) | 220 | ) |
214 | { | 221 | { |
215 | glActiveTextureARB(GL_TEXTURE0_ARB + stage); // NOTE: leaves texture stage set | 222 | if (stage > 0) |
223 | { | ||
224 | glActiveTextureARB(GL_TEXTURE0_ARB + stage); | ||
225 | } | ||
216 | 226 | ||
217 | glEnable(GL_TEXTURE_CUBE_MAP_ARB); | 227 | glEnable(GL_TEXTURE_CUBE_MAP_ARB); |
228 | |||
229 | if (stage > 0) | ||
230 | { | ||
231 | glActiveTextureARB(GL_TEXTURE0_ARB); | ||
232 | } | ||
218 | } | 233 | } |
219 | } | 234 | } |
220 | 235 | ||
@@ -223,7 +238,10 @@ void LLCubeMap::enableTextureCoords(S32 stage) | |||
223 | mTextureCoordStage = stage; | 238 | mTextureCoordStage = stage; |
224 | if (gGLManager.mHasCubeMap && stage >= 0) | 239 | if (gGLManager.mHasCubeMap && stage >= 0) |
225 | { | 240 | { |
226 | glActiveTextureARB(GL_TEXTURE0_ARB + stage); // NOTE: leaves texture stage set | 241 | if (stage > 0) |
242 | { | ||
243 | glActiveTextureARB(GL_TEXTURE0_ARB + stage); | ||
244 | } | ||
227 | 245 | ||
228 | glEnable(GL_TEXTURE_GEN_R); | 246 | glEnable(GL_TEXTURE_GEN_R); |
229 | glEnable(GL_TEXTURE_GEN_S); | 247 | glEnable(GL_TEXTURE_GEN_S); |
@@ -233,7 +251,10 @@ void LLCubeMap::enableTextureCoords(S32 stage) | |||
233 | glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP); | 251 | glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP); |
234 | glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP); | 252 | glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP); |
235 | 253 | ||
236 | glActiveTextureARB(GL_TEXTURE0_ARB); | 254 | if (stage > 0) |
255 | { | ||
256 | glActiveTextureARB(GL_TEXTURE0_ARB); | ||
257 | } | ||
237 | } | 258 | } |
238 | } | 259 | } |
239 | 260 | ||
@@ -249,9 +270,16 @@ void LLCubeMap::disableTexture(void) | |||
249 | //&& LLFeatureManager::getInstance()->isFeatureAvailable("RenderCubeMap") | 270 | //&& LLFeatureManager::getInstance()->isFeatureAvailable("RenderCubeMap") |
250 | ) | 271 | ) |
251 | { | 272 | { |
252 | glActiveTextureARB(GL_TEXTURE0_ARB + mTextureStage); | 273 | if (mTextureStage > 0) |
274 | { | ||
275 | glActiveTextureARB(GL_TEXTURE0_ARB + mTextureStage); | ||
276 | } | ||
253 | glBindTexture(GL_TEXTURE_CUBE_MAP_ARB, 0); | 277 | glBindTexture(GL_TEXTURE_CUBE_MAP_ARB, 0); |
254 | glDisable(GL_TEXTURE_CUBE_MAP_ARB); | 278 | glDisable(GL_TEXTURE_CUBE_MAP_ARB); |
279 | if (mTextureStage > 0) | ||
280 | { | ||
281 | glActiveTextureARB(GL_TEXTURE0_ARB); | ||
282 | } | ||
255 | } | 283 | } |
256 | } | 284 | } |
257 | 285 | ||
@@ -259,17 +287,28 @@ void LLCubeMap::disableTextureCoords(void) | |||
259 | { | 287 | { |
260 | if (gGLManager.mHasCubeMap && mTextureCoordStage >= 0) | 288 | if (gGLManager.mHasCubeMap && mTextureCoordStage >= 0) |
261 | { | 289 | { |
262 | glActiveTextureARB(GL_TEXTURE0_ARB + mTextureCoordStage); | 290 | if (mTextureCoordStage > 0) |
291 | { | ||
292 | glActiveTextureARB(GL_TEXTURE0_ARB + mTextureCoordStage); | ||
293 | } | ||
263 | glDisable(GL_TEXTURE_GEN_S); | 294 | glDisable(GL_TEXTURE_GEN_S); |
264 | glDisable(GL_TEXTURE_GEN_T); | 295 | glDisable(GL_TEXTURE_GEN_T); |
265 | glDisable(GL_TEXTURE_GEN_R); | 296 | glDisable(GL_TEXTURE_GEN_R); |
297 | if (mTextureCoordStage > 0) | ||
298 | { | ||
299 | glActiveTextureARB(GL_TEXTURE0_ARB); | ||
300 | } | ||
266 | } | 301 | } |
267 | } | 302 | } |
268 | 303 | ||
269 | void LLCubeMap::setMatrix(S32 stage) | 304 | void LLCubeMap::setMatrix(S32 stage) |
270 | { | 305 | { |
271 | mMatrixStage = stage; | 306 | mMatrixStage = stage; |
272 | glActiveTextureARB(GL_TEXTURE0_ARB+stage); | 307 | |
308 | if (stage > 0) | ||
309 | { | ||
310 | glActiveTextureARB(GL_TEXTURE0_ARB+stage); | ||
311 | } | ||
273 | 312 | ||
274 | LLVector3 x(LLVector3d(gGLModelView+0)); | 313 | LLVector3 x(LLVector3d(gGLModelView+0)); |
275 | LLVector3 y(LLVector3d(gGLModelView+4)); | 314 | LLVector3 y(LLVector3d(gGLModelView+4)); |
@@ -284,16 +323,27 @@ void LLCubeMap::setMatrix(S32 stage) | |||
284 | glPushMatrix(); | 323 | glPushMatrix(); |
285 | glLoadMatrixf((F32 *)trans.mMatrix); | 324 | glLoadMatrixf((F32 *)trans.mMatrix); |
286 | glMatrixMode(GL_MODELVIEW); | 325 | glMatrixMode(GL_MODELVIEW); |
287 | glActiveTextureARB(GL_TEXTURE0_ARB); | 326 | |
327 | if (stage > 0) | ||
328 | { | ||
329 | glActiveTextureARB(GL_TEXTURE0_ARB); | ||
330 | } | ||
288 | } | 331 | } |
289 | 332 | ||
290 | void LLCubeMap::restoreMatrix() | 333 | void LLCubeMap::restoreMatrix() |
291 | { | 334 | { |
292 | glActiveTextureARB(GL_TEXTURE0_ARB+mMatrixStage); | 335 | if (mMatrixStage > 0) |
336 | { | ||
337 | glActiveTextureARB(GL_TEXTURE0_ARB+mMatrixStage); | ||
338 | } | ||
293 | glMatrixMode(GL_TEXTURE); | 339 | glMatrixMode(GL_TEXTURE); |
294 | glPopMatrix(); | 340 | glPopMatrix(); |
295 | glMatrixMode(GL_MODELVIEW); | 341 | glMatrixMode(GL_MODELVIEW); |
296 | glActiveTextureARB(GL_TEXTURE0_ARB); | 342 | |
343 | if (mMatrixStage > 0) | ||
344 | { | ||
345 | glActiveTextureARB(GL_TEXTURE0_ARB); | ||
346 | } | ||
297 | } | 347 | } |
298 | 348 | ||
299 | LLVector3 LLCubeMap::map(U8 side, U16 v_val, U16 h_val) const | 349 | LLVector3 LLCubeMap::map(U8 side, U16 v_val, U16 h_val) const |
diff --git a/linden/indra/newview/llcylinder.cpp b/linden/indra/newview/llcylinder.cpp index 9b146a3..c05a380 100644 --- a/linden/indra/newview/llcylinder.cpp +++ b/linden/indra/newview/llcylinder.cpp | |||
@@ -255,7 +255,6 @@ void LLCone::render(S32 level_of_detail) | |||
255 | // center object at 0 | 255 | // center object at 0 |
256 | glTranslatef(0.f, 0.f, - height / 2.0f); | 256 | glTranslatef(0.f, 0.f, - height / 2.0f); |
257 | 257 | ||
258 | LLVertexBuffer::unbind(); | ||
259 | drawSide(level_of_detail); | 258 | drawSide(level_of_detail); |
260 | drawBottom(level_of_detail); | 259 | drawBottom(level_of_detail); |
261 | 260 | ||
diff --git a/linden/indra/newview/lldrawable.cpp b/linden/indra/newview/lldrawable.cpp index 3a2841d..d2b2a99 100644 --- a/linden/indra/newview/lldrawable.cpp +++ b/linden/indra/newview/lldrawable.cpp | |||
@@ -1188,10 +1188,11 @@ void LLSpatialBridge::setVisible(LLCamera& camera_in, std::vector<LLDrawable*>* | |||
1188 | LLVector3 center = (mExtents[0] + mExtents[1]) * 0.5f; | 1188 | LLVector3 center = (mExtents[0] + mExtents[1]) * 0.5f; |
1189 | LLVector3 size = (mExtents[1]-mExtents[0]) * 0.5f; | 1189 | LLVector3 size = (mExtents[1]-mExtents[0]) * 0.5f; |
1190 | 1190 | ||
1191 | if (camera_in.AABBInFrustumNoFarClip(center, size) && | 1191 | if (LLPipeline::sImpostorRender || |
1192 | AABBSphereIntersect(mExtents[0], mExtents[1], camera_in.getOrigin(), camera_in.mFrustumCornerDist)) | 1192 | (camera_in.AABBInFrustumNoFarClip(center, size) && |
1193 | AABBSphereIntersect(mExtents[0], mExtents[1], camera_in.getOrigin(), camera_in.mFrustumCornerDist))) | ||
1193 | { | 1194 | { |
1194 | if (LLPipeline::calcPixelArea(center, size, camera_in) < FORCE_INVISIBLE_AREA) | 1195 | if (!LLPipeline::sImpostorRender && LLPipeline::calcPixelArea(center, size, camera_in) < FORCE_INVISIBLE_AREA) |
1195 | { | 1196 | { |
1196 | return; | 1197 | return; |
1197 | } | 1198 | } |
diff --git a/linden/indra/newview/lldrawpool.cpp b/linden/indra/newview/lldrawpool.cpp index 409439a..c579c68 100644 --- a/linden/indra/newview/lldrawpool.cpp +++ b/linden/indra/newview/lldrawpool.cpp | |||
@@ -115,7 +115,6 @@ LLDrawPool::LLDrawPool(const U32 type) | |||
115 | sNumDrawPools++; | 115 | sNumDrawPools++; |
116 | mId = sNumDrawPools; | 116 | mId = sNumDrawPools; |
117 | mVertexShaderLevel = 0; | 117 | mVertexShaderLevel = 0; |
118 | mIndicesDrawn = 0; | ||
119 | } | 118 | } |
120 | 119 | ||
121 | LLDrawPool::~LLDrawPool() | 120 | LLDrawPool::~LLDrawPool() |
@@ -136,24 +135,6 @@ void LLDrawPool::beginRenderPass( S32 pass ) | |||
136 | //virtual | 135 | //virtual |
137 | void LLDrawPool::endRenderPass( S32 pass ) | 136 | void LLDrawPool::endRenderPass( S32 pass ) |
138 | { | 137 | { |
139 | glDisableClientState ( GL_TEXTURE_COORD_ARRAY ); | ||
140 | glDisableClientState ( GL_COLOR_ARRAY ); | ||
141 | glDisableClientState ( GL_NORMAL_ARRAY ); | ||
142 | } | ||
143 | |||
144 | U32 LLDrawPool::getTrianglesDrawn() const | ||
145 | { | ||
146 | return mIndicesDrawn / 3; | ||
147 | } | ||
148 | |||
149 | void LLDrawPool::resetTrianglesDrawn() | ||
150 | { | ||
151 | mIndicesDrawn = 0; | ||
152 | } | ||
153 | |||
154 | void LLDrawPool::addIndicesDrawn(const U32 indices) | ||
155 | { | ||
156 | mIndicesDrawn += indices; | ||
157 | } | 138 | } |
158 | 139 | ||
159 | //============================= | 140 | //============================= |
@@ -224,7 +205,7 @@ void LLFacePool::drawLoop() | |||
224 | { | 205 | { |
225 | if (!mDrawFace.empty()) | 206 | if (!mDrawFace.empty()) |
226 | { | 207 | { |
227 | mIndicesDrawn += drawLoop(mDrawFace); | 208 | drawLoop(mDrawFace); |
228 | } | 209 | } |
229 | } | 210 | } |
230 | 211 | ||
@@ -382,10 +363,6 @@ void LLRenderPass::renderTexture(U32 type, U32 mask) | |||
382 | 363 | ||
383 | void LLRenderPass::pushBatches(U32 type, U32 mask, BOOL texture) | 364 | void LLRenderPass::pushBatches(U32 type, U32 mask, BOOL texture) |
384 | { | 365 | { |
385 | #if !LL_RELEASE_FOR_DOWNLOAD | ||
386 | LLGLState::checkClientArrays(mask); | ||
387 | #endif | ||
388 | |||
389 | for (LLCullResult::drawinfo_list_t::iterator i = gPipeline.beginRenderMap(type); i != gPipeline.endRenderMap(type); ++i) | 366 | for (LLCullResult::drawinfo_list_t::iterator i = gPipeline.beginRenderMap(type); i != gPipeline.endRenderMap(type); ++i) |
390 | { | 367 | { |
391 | LLDrawInfo* pparams = *i; | 368 | LLDrawInfo* pparams = *i; |
@@ -436,9 +413,7 @@ void LLRenderPass::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture) | |||
436 | if (params.mVertexBuffer.notNull()) | 413 | if (params.mVertexBuffer.notNull()) |
437 | { | 414 | { |
438 | params.mVertexBuffer->setBuffer(mask); | 415 | params.mVertexBuffer->setBuffer(mask); |
439 | U16* indices_pointer = (U16*) params.mVertexBuffer->getIndicesPointer(); | 416 | params.mVertexBuffer->drawRange(LLVertexBuffer::TRIANGLES, params.mStart, params.mEnd, params.mCount, params.mOffset); |
440 | glDrawRangeElements(GL_TRIANGLES, params.mStart, params.mEnd, params.mCount, | ||
441 | GL_UNSIGNED_SHORT, indices_pointer+params.mOffset); | ||
442 | gPipeline.addTrianglesDrawn(params.mCount/3); | 417 | gPipeline.addTrianglesDrawn(params.mCount/3); |
443 | } | 418 | } |
444 | 419 | ||
diff --git a/linden/indra/newview/lldrawpool.h b/linden/indra/newview/lldrawpool.h index bb354e3..3c80aef 100644 --- a/linden/indra/newview/lldrawpool.h +++ b/linden/indra/newview/lldrawpool.h | |||
@@ -90,15 +90,10 @@ public: | |||
90 | virtual BOOL isFacePool() { return FALSE; } | 90 | virtual BOOL isFacePool() { return FALSE; } |
91 | virtual void resetDrawOrders() = 0; | 91 | virtual void resetDrawOrders() = 0; |
92 | 92 | ||
93 | U32 getTrianglesDrawn() const; | ||
94 | void resetTrianglesDrawn(); | ||
95 | void addIndicesDrawn(const U32 indices); | ||
96 | |||
97 | protected: | 93 | protected: |
98 | S32 mVertexShaderLevel; | 94 | S32 mVertexShaderLevel; |
99 | S32 mId; | 95 | S32 mId; |
100 | U32 mType; // Type of draw pool | 96 | U32 mType; // Type of draw pool |
101 | S32 mIndicesDrawn; | ||
102 | }; | 97 | }; |
103 | 98 | ||
104 | class LLRenderPass : public LLDrawPool | 99 | class LLRenderPass : public LLDrawPool |
diff --git a/linden/indra/newview/lldrawpoolalpha.cpp b/linden/indra/newview/lldrawpoolalpha.cpp index cc2600e..ddde578 100644 --- a/linden/indra/newview/lldrawpoolalpha.cpp +++ b/linden/indra/newview/lldrawpoolalpha.cpp | |||
@@ -77,9 +77,6 @@ void LLDrawPoolAlpha::prerender() | |||
77 | void LLDrawPoolAlpha::beginRenderPass(S32 pass) | 77 | void LLDrawPoolAlpha::beginRenderPass(S32 pass) |
78 | { | 78 | { |
79 | LLFastTimer t(LLFastTimer::FTM_RENDER_ALPHA); | 79 | LLFastTimer t(LLFastTimer::FTM_RENDER_ALPHA); |
80 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
81 | glEnableClientState(GL_NORMAL_ARRAY); | ||
82 | glEnableClientState(GL_COLOR_ARRAY); | ||
83 | 80 | ||
84 | if (LLPipeline::sUnderWaterRender) | 81 | if (LLPipeline::sUnderWaterRender) |
85 | { | 82 | { |
@@ -128,8 +125,6 @@ void LLDrawPoolAlpha::render(S32 pass) | |||
128 | { | 125 | { |
129 | glUseProgramObjectARB(0); | 126 | glUseProgramObjectARB(0); |
130 | } | 127 | } |
131 | glDisableClientState(GL_NORMAL_ARRAY); | ||
132 | glDisableClientState(GL_COLOR_ARRAY); | ||
133 | gPipeline.enableLightsFullbright(LLColor4(1,1,1,1)); | 128 | gPipeline.enableLightsFullbright(LLColor4(1,1,1,1)); |
134 | glColor4f(1,0,0,1); | 129 | glColor4f(1,0,0,1); |
135 | LLViewerImage::sSmokeImagep->addTextureStats(1024.f*1024.f); | 130 | LLViewerImage::sSmokeImagep->addTextureStats(1024.f*1024.f); |
@@ -141,10 +136,6 @@ void LLDrawPoolAlpha::render(S32 pass) | |||
141 | 136 | ||
142 | void LLDrawPoolAlpha::renderAlpha(U32 mask) | 137 | void LLDrawPoolAlpha::renderAlpha(U32 mask) |
143 | { | 138 | { |
144 | #if !LL_RELEASE_FOR_DOWNLOAD | ||
145 | LLGLState::checkClientArrays(mask); | ||
146 | #endif | ||
147 | |||
148 | for (LLCullResult::sg_list_t::iterator i = gPipeline.beginAlphaGroups(); i != gPipeline.endAlphaGroups(); ++i) | 139 | for (LLCullResult::sg_list_t::iterator i = gPipeline.beginAlphaGroups(); i != gPipeline.endAlphaGroups(); ++i) |
149 | { | 140 | { |
150 | LLSpatialGroup* group = *i; | 141 | LLSpatialGroup* group = *i; |
@@ -182,9 +173,7 @@ void LLDrawPoolAlpha::renderAlphaHighlight(U32 mask) | |||
182 | LLRenderPass::applyModelMatrix(params); | 173 | LLRenderPass::applyModelMatrix(params); |
183 | 174 | ||
184 | params.mVertexBuffer->setBuffer(mask); | 175 | params.mVertexBuffer->setBuffer(mask); |
185 | U16* indices_pointer = (U16*) params.mVertexBuffer->getIndicesPointer(); | 176 | params.mVertexBuffer->drawRange(LLVertexBuffer::TRIANGLES, params.mStart, params.mEnd, params.mCount, params.mOffset); |
186 | glDrawRangeElements(GL_TRIANGLES, params.mStart, params.mEnd, params.mCount, | ||
187 | GL_UNSIGNED_SHORT, indices_pointer+params.mOffset); | ||
188 | gPipeline.addTrianglesDrawn(params.mCount/3); | 177 | gPipeline.addTrianglesDrawn(params.mCount/3); |
189 | } | 178 | } |
190 | } | 179 | } |
@@ -303,9 +292,7 @@ void LLDrawPoolAlpha::renderGroupAlpha(LLSpatialGroup* group, U32 type, U32 mask | |||
303 | } | 292 | } |
304 | 293 | ||
305 | params.mVertexBuffer->setBuffer(mask); | 294 | params.mVertexBuffer->setBuffer(mask); |
306 | U16* indices_pointer = (U16*) params.mVertexBuffer->getIndicesPointer(); | 295 | params.mVertexBuffer->drawRange(LLVertexBuffer::TRIANGLES, params.mStart, params.mEnd, params.mCount, params.mOffset); |
307 | glDrawRangeElements(GL_TRIANGLES, params.mStart, params.mEnd, params.mCount, | ||
308 | GL_UNSIGNED_SHORT, indices_pointer+params.mOffset); | ||
309 | gPipeline.addTrianglesDrawn(params.mCount/3); | 296 | gPipeline.addTrianglesDrawn(params.mCount/3); |
310 | 297 | ||
311 | if (params.mTextureMatrix && texture && params.mTexture.notNull()) | 298 | if (params.mTextureMatrix && texture && params.mTexture.notNull()) |
diff --git a/linden/indra/newview/lldrawpoolavatar.cpp b/linden/indra/newview/lldrawpoolavatar.cpp index b461757..8e3341a 100644 --- a/linden/indra/newview/lldrawpoolavatar.cpp +++ b/linden/indra/newview/lldrawpoolavatar.cpp | |||
@@ -216,13 +216,11 @@ void LLDrawPoolAvatar::beginFootShadow() | |||
216 | } | 216 | } |
217 | 217 | ||
218 | gPipeline.enableLightsFullbright(LLColor4(1,1,1,1)); | 218 | gPipeline.enableLightsFullbright(LLColor4(1,1,1,1)); |
219 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
220 | } | 219 | } |
221 | 220 | ||
222 | void LLDrawPoolAvatar::endFootShadow() | 221 | void LLDrawPoolAvatar::endFootShadow() |
223 | { | 222 | { |
224 | gPipeline.enableLightsDynamic(); | 223 | gPipeline.enableLightsDynamic(); |
225 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
226 | } | 224 | } |
227 | 225 | ||
228 | void LLDrawPoolAvatar::beginRigid() | 226 | void LLDrawPoolAvatar::beginRigid() |
@@ -247,16 +245,11 @@ void LLDrawPoolAvatar::beginRigid() | |||
247 | { | 245 | { |
248 | sVertexProgram = NULL; | 246 | sVertexProgram = NULL; |
249 | } | 247 | } |
250 | |||
251 | glEnableClientState(GL_NORMAL_ARRAY); | ||
252 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
253 | } | 248 | } |
254 | 249 | ||
255 | void LLDrawPoolAvatar::endRigid() | 250 | void LLDrawPoolAvatar::endRigid() |
256 | { | 251 | { |
257 | sShaderLevel = mVertexShaderLevel; | 252 | sShaderLevel = mVertexShaderLevel; |
258 | glDisableClientState(GL_NORMAL_ARRAY); | ||
259 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
260 | if (sVertexProgram != NULL) | 253 | if (sVertexProgram != NULL) |
261 | { | 254 | { |
262 | sVertexProgram->unbind(); | 255 | sVertexProgram->unbind(); |
@@ -265,9 +258,6 @@ void LLDrawPoolAvatar::endRigid() | |||
265 | 258 | ||
266 | void LLDrawPoolAvatar::beginSkinned() | 259 | void LLDrawPoolAvatar::beginSkinned() |
267 | { | 260 | { |
268 | glEnableClientState(GL_NORMAL_ARRAY); | ||
269 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
270 | |||
271 | if (sShaderLevel > 0) | 261 | if (sShaderLevel > 0) |
272 | { | 262 | { |
273 | if (LLPipeline::sUnderWaterRender) | 263 | if (LLPipeline::sUnderWaterRender) |
@@ -295,8 +285,7 @@ void LLDrawPoolAvatar::beginSkinned() | |||
295 | if (sShaderLevel > 0) // for hardware blending | 285 | if (sShaderLevel > 0) // for hardware blending |
296 | { | 286 | { |
297 | sRenderingSkinned = TRUE; | 287 | sRenderingSkinned = TRUE; |
298 | glClientActiveTextureARB(GL_TEXTURE1_ARB); | 288 | |
299 | |||
300 | sVertexProgram->bind(); | 289 | sVertexProgram->bind(); |
301 | if (sShaderLevel >= SHADER_LEVEL_CLOTH) | 290 | if (sShaderLevel >= SHADER_LEVEL_CLOTH) |
302 | { | 291 | { |
@@ -331,7 +320,6 @@ void LLDrawPoolAvatar::endSkinned() | |||
331 | sRenderingSkinned = FALSE; | 320 | sRenderingSkinned = FALSE; |
332 | sVertexProgram->disableTexture(LLShaderMgr::BUMP_MAP); | 321 | sVertexProgram->disableTexture(LLShaderMgr::BUMP_MAP); |
333 | glActiveTextureARB(GL_TEXTURE0_ARB); | 322 | glActiveTextureARB(GL_TEXTURE0_ARB); |
334 | glClientActiveTextureARB(GL_TEXTURE0_ARB); | ||
335 | disable_vertex_weighting(sVertexProgram->mAttribute[LLShaderMgr::AVATAR_WEIGHT]); | 323 | disable_vertex_weighting(sVertexProgram->mAttribute[LLShaderMgr::AVATAR_WEIGHT]); |
336 | if (sShaderLevel >= SHADER_LEVEL_BUMP) | 324 | if (sShaderLevel >= SHADER_LEVEL_BUMP) |
337 | { | 325 | { |
@@ -356,10 +344,6 @@ void LLDrawPoolAvatar::endSkinned() | |||
356 | } | 344 | } |
357 | 345 | ||
358 | glActiveTextureARB(GL_TEXTURE0_ARB); | 346 | glActiveTextureARB(GL_TEXTURE0_ARB); |
359 | glClientActiveTextureARB(GL_TEXTURE0_ARB); | ||
360 | |||
361 | glDisableClientState(GL_NORMAL_ARRAY); | ||
362 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
363 | } | 347 | } |
364 | 348 | ||
365 | 349 | ||
@@ -438,7 +422,7 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass) | |||
438 | } | 422 | } |
439 | else if (gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_FOOT_SHADOWS)) | 423 | else if (gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_FOOT_SHADOWS)) |
440 | { | 424 | { |
441 | mIndicesDrawn += avatarp->renderFootShadows(); | 425 | avatarp->renderFootShadows(); |
442 | } | 426 | } |
443 | return; | 427 | return; |
444 | } | 428 | } |
@@ -451,7 +435,7 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass) | |||
451 | if (pass == 1) | 435 | if (pass == 1) |
452 | { | 436 | { |
453 | // render rigid meshes (eyeballs) first | 437 | // render rigid meshes (eyeballs) first |
454 | mIndicesDrawn += avatarp->renderRigid(); | 438 | avatarp->renderRigid(); |
455 | return; | 439 | return; |
456 | } | 440 | } |
457 | 441 | ||
@@ -548,7 +532,7 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass) | |||
548 | color.setColor(1.0f, 1.0f, 1.0f, 1.0f); | 532 | color.setColor(1.0f, 1.0f, 1.0f, 1.0f); |
549 | } | 533 | } |
550 | 534 | ||
551 | mIndicesDrawn += avatarp->renderSkinned(AVATAR_RENDER_PASS_SINGLE); | 535 | avatarp->renderSkinned(AVATAR_RENDER_PASS_SINGLE); |
552 | } | 536 | } |
553 | } | 537 | } |
554 | 538 | ||
@@ -609,9 +593,6 @@ void LLDrawPoolAvatar::renderForSelect() | |||
609 | return; | 593 | return; |
610 | } | 594 | } |
611 | 595 | ||
612 | glEnableClientState(GL_VERTEX_ARRAY); | ||
613 | glEnableClientState(GL_NORMAL_ARRAY); | ||
614 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
615 | sVertexProgram = &gAvatarPickProgram; | 596 | sVertexProgram = &gAvatarPickProgram; |
616 | if (sShaderLevel > 0) | 597 | if (sShaderLevel > 0) |
617 | { | 598 | { |
@@ -624,13 +605,12 @@ void LLDrawPoolAvatar::renderForSelect() | |||
624 | 605 | ||
625 | if ((sShaderLevel > 0) && !gUseGLPick) // for hardware blending | 606 | if ((sShaderLevel > 0) && !gUseGLPick) // for hardware blending |
626 | { | 607 | { |
627 | glClientActiveTextureARB(GL_TEXTURE0_ARB); | ||
628 | sRenderingSkinned = TRUE; | 608 | sRenderingSkinned = TRUE; |
629 | sVertexProgram->bind(); | 609 | sVertexProgram->bind(); |
630 | enable_vertex_weighting(sVertexProgram->mAttribute[LLShaderMgr::AVATAR_WEIGHT]); | 610 | enable_vertex_weighting(sVertexProgram->mAttribute[LLShaderMgr::AVATAR_WEIGHT]); |
631 | } | 611 | } |
632 | 612 | ||
633 | mIndicesDrawn += avatarp->renderSkinned(AVATAR_RENDER_PASS_SINGLE); | 613 | avatarp->renderSkinned(AVATAR_RENDER_PASS_SINGLE); |
634 | 614 | ||
635 | // if we're in software-blending, remember to set the fence _after_ we draw so we wait till this rendering is done | 615 | // if we're in software-blending, remember to set the fence _after_ we draw so we wait till this rendering is done |
636 | if ((sShaderLevel > 0) && !gUseGLPick) | 616 | if ((sShaderLevel > 0) && !gUseGLPick) |
@@ -645,8 +625,6 @@ void LLDrawPoolAvatar::renderForSelect() | |||
645 | 625 | ||
646 | // restore texture mode | 626 | // restore texture mode |
647 | glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); | 627 | glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); |
648 | glDisableClientState(GL_NORMAL_ARRAY); | ||
649 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
650 | } | 628 | } |
651 | 629 | ||
652 | //----------------------------------------------------------------------------- | 630 | //----------------------------------------------------------------------------- |
diff --git a/linden/indra/newview/lldrawpoolbump.cpp b/linden/indra/newview/lldrawpoolbump.cpp index 2345406..7e8b9d6 100644 --- a/linden/indra/newview/lldrawpoolbump.cpp +++ b/linden/indra/newview/lldrawpoolbump.cpp | |||
@@ -316,12 +316,8 @@ void LLDrawPoolBump::beginShiny(bool invisible) | |||
316 | mShiny = TRUE; | 316 | mShiny = TRUE; |
317 | sVertexMask = VERTEX_MASK_SHINY; | 317 | sVertexMask = VERTEX_MASK_SHINY; |
318 | // Second pass: environment map | 318 | // Second pass: environment map |
319 | glEnableClientState(GL_VERTEX_ARRAY); | ||
320 | glEnableClientState(GL_NORMAL_ARRAY); | ||
321 | glEnableClientState(GL_COLOR_ARRAY); | ||
322 | if (!invisible && mVertexShaderLevel > 1) | 319 | if (!invisible && mVertexShaderLevel > 1) |
323 | { | 320 | { |
324 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
325 | sVertexMask = VERTEX_MASK_SHINY | LLVertexBuffer::MAP_TEXCOORD; | 321 | sVertexMask = VERTEX_MASK_SHINY | LLVertexBuffer::MAP_TEXCOORD; |
326 | } | 322 | } |
327 | 323 | ||
@@ -456,13 +452,7 @@ void LLDrawPoolBump::endShiny(bool invisible) | |||
456 | 452 | ||
457 | LLImageGL::unbindTexture(0, GL_TEXTURE_2D); | 453 | LLImageGL::unbindTexture(0, GL_TEXTURE_2D); |
458 | glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); | 454 | glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); |
459 | glDisableClientState(GL_NORMAL_ARRAY); | 455 | |
460 | glDisableClientState(GL_COLOR_ARRAY); | ||
461 | if (!invisible && mVertexShaderLevel > 1) | ||
462 | { | ||
463 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
464 | } | ||
465 | |||
466 | diffuse_channel = -1; | 456 | diffuse_channel = -1; |
467 | cube_channel = 0; | 457 | cube_channel = 0; |
468 | mShiny = FALSE; | 458 | mShiny = FALSE; |
@@ -479,10 +469,6 @@ void LLDrawPoolBump::beginFullbrightShiny() | |||
479 | sVertexMask = VERTEX_MASK_SHINY | LLVertexBuffer::MAP_TEXCOORD; | 469 | sVertexMask = VERTEX_MASK_SHINY | LLVertexBuffer::MAP_TEXCOORD; |
480 | 470 | ||
481 | // Second pass: environment map | 471 | // Second pass: environment map |
482 | glEnableClientState(GL_VERTEX_ARRAY); | ||
483 | glEnableClientState(GL_NORMAL_ARRAY); | ||
484 | glEnableClientState(GL_COLOR_ARRAY); | ||
485 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
486 | 472 | ||
487 | if (LLPipeline::sUnderWaterRender) | 473 | if (LLPipeline::sUnderWaterRender) |
488 | { | 474 | { |
@@ -564,9 +550,6 @@ void LLDrawPoolBump::endFullbrightShiny() | |||
564 | 550 | ||
565 | LLImageGL::unbindTexture(0, GL_TEXTURE_2D); | 551 | LLImageGL::unbindTexture(0, GL_TEXTURE_2D); |
566 | glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); | 552 | glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); |
567 | glDisableClientState(GL_NORMAL_ARRAY); | ||
568 | glDisableClientState(GL_COLOR_ARRAY); | ||
569 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
570 | 553 | ||
571 | diffuse_channel = -1; | 554 | diffuse_channel = -1; |
572 | cube_channel = 0; | 555 | cube_channel = 0; |
@@ -607,9 +590,7 @@ void LLDrawPoolBump::renderGroup(LLSpatialGroup* group, U32 type, U32 mask, BOOL | |||
607 | applyModelMatrix(params); | 590 | applyModelMatrix(params); |
608 | 591 | ||
609 | params.mVertexBuffer->setBuffer(mask); | 592 | params.mVertexBuffer->setBuffer(mask); |
610 | U16* indices_pointer = (U16*) params.mVertexBuffer->getIndicesPointer(); | 593 | params.mVertexBuffer->drawRange(LLVertexBuffer::TRIANGLES, params.mStart, params.mEnd, params.mCount, params.mOffset); |
611 | glDrawRangeElements(GL_TRIANGLES, params.mStart, params.mEnd, params.mCount, | ||
612 | GL_UNSIGNED_SHORT, indices_pointer+params.mOffset); | ||
613 | gPipeline.addTrianglesDrawn(params.mCount/3); | 594 | gPipeline.addTrianglesDrawn(params.mCount/3); |
614 | } | 595 | } |
615 | } | 596 | } |
@@ -670,8 +651,6 @@ void LLDrawPoolBump::beginBump() | |||
670 | // TEXTURE UNIT 0 | 651 | // TEXTURE UNIT 0 |
671 | // Output.rgb = texture at texture coord 0 | 652 | // Output.rgb = texture at texture coord 0 |
672 | glActiveTextureARB(GL_TEXTURE0_ARB); | 653 | glActiveTextureARB(GL_TEXTURE0_ARB); |
673 | glClientActiveTextureARB(GL_TEXTURE0_ARB); | ||
674 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
675 | 654 | ||
676 | glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB); | 655 | glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB); |
677 | glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE); | 656 | glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE); |
@@ -686,8 +665,6 @@ void LLDrawPoolBump::beginBump() | |||
686 | 665 | ||
687 | // TEXTURE UNIT 1 | 666 | // TEXTURE UNIT 1 |
688 | glActiveTextureARB(GL_TEXTURE1_ARB); | 667 | glActiveTextureARB(GL_TEXTURE1_ARB); |
689 | glClientActiveTextureARB(GL_TEXTURE1_ARB); | ||
690 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
691 | 668 | ||
692 | glEnable(GL_TEXTURE_2D); // Texture unit 1 | 669 | glEnable(GL_TEXTURE_2D); // Texture unit 1 |
693 | 670 | ||
@@ -752,15 +729,11 @@ void LLDrawPoolBump::endBump() | |||
752 | 729 | ||
753 | // Disable texture unit 1 | 730 | // Disable texture unit 1 |
754 | glActiveTextureARB(GL_TEXTURE1_ARB); | 731 | glActiveTextureARB(GL_TEXTURE1_ARB); |
755 | glClientActiveTextureARB(GL_TEXTURE1_ARB); | ||
756 | glDisable(GL_TEXTURE_2D); // Texture unit 1 | 732 | glDisable(GL_TEXTURE_2D); // Texture unit 1 |
757 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
758 | glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); | 733 | glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); |
759 | 734 | ||
760 | // Disable texture unit 0 | 735 | // Disable texture unit 0 |
761 | glActiveTextureARB(GL_TEXTURE0_ARB); | 736 | glActiveTextureARB(GL_TEXTURE0_ARB); |
762 | glClientActiveTextureARB(GL_TEXTURE0_ARB); | ||
763 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
764 | glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); | 737 | glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); |
765 | 738 | ||
766 | gGL.blendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); | 739 | gGL.blendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); |
@@ -1091,10 +1064,6 @@ void LLBumpImageList::onSourceLoaded( BOOL success, LLViewerImage *src_vi, LLIma | |||
1091 | 1064 | ||
1092 | void LLDrawPoolBump::renderBump(U32 type, U32 mask) | 1065 | void LLDrawPoolBump::renderBump(U32 type, U32 mask) |
1093 | { | 1066 | { |
1094 | #if !LL_RELEASE_FOR_DOWNLOAD | ||
1095 | LLGLState::checkClientArrays(mask); | ||
1096 | #endif | ||
1097 | |||
1098 | LLCullResult::drawinfo_list_t::iterator begin = gPipeline.beginRenderMap(type); | 1067 | LLCullResult::drawinfo_list_t::iterator begin = gPipeline.beginRenderMap(type); |
1099 | LLCullResult::drawinfo_list_t::iterator end = gPipeline.endRenderMap(type); | 1068 | LLCullResult::drawinfo_list_t::iterator end = gPipeline.endRenderMap(type); |
1100 | 1069 | ||
@@ -1178,11 +1147,8 @@ void LLDrawPoolBump::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture) | |||
1178 | } | 1147 | } |
1179 | 1148 | ||
1180 | params.mVertexBuffer->setBuffer(mask); | 1149 | params.mVertexBuffer->setBuffer(mask); |
1181 | U16* indices_pointer = (U16*) params.mVertexBuffer->getIndicesPointer(); | 1150 | params.mVertexBuffer->drawRange(LLVertexBuffer::TRIANGLES, params.mStart, params.mEnd, params.mCount, params.mOffset); |
1182 | glDrawRangeElements(GL_TRIANGLES, params.mStart, params.mEnd, params.mCount, | ||
1183 | GL_UNSIGNED_SHORT, indices_pointer+params.mOffset); | ||
1184 | gPipeline.addTrianglesDrawn(params.mCount/3); | 1151 | gPipeline.addTrianglesDrawn(params.mCount/3); |
1185 | |||
1186 | if (params.mTextureMatrix) | 1152 | if (params.mTextureMatrix) |
1187 | { | 1153 | { |
1188 | if (mShiny) | 1154 | if (mShiny) |
diff --git a/linden/indra/newview/lldrawpoolground.cpp b/linden/indra/newview/lldrawpoolground.cpp index a1c5a99..03b8a0c 100644 --- a/linden/indra/newview/lldrawpoolground.cpp +++ b/linden/indra/newview/lldrawpoolground.cpp | |||
@@ -68,9 +68,6 @@ void LLDrawPoolGround::render(S32 pass) | |||
68 | return; | 68 | return; |
69 | } | 69 | } |
70 | 70 | ||
71 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
72 | glEnableClientState(GL_VERTEX_ARRAY); | ||
73 | |||
74 | LLGLSPipelineSkyBox gls_skybox; | 71 | LLGLSPipelineSkyBox gls_skybox; |
75 | LLImageGL::unbindTexture(0, GL_TEXTURE_2D); | 72 | LLImageGL::unbindTexture(0, GL_TEXTURE_2D); |
76 | LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE); | 73 | LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE); |
diff --git a/linden/indra/newview/lldrawpoolsimple.cpp b/linden/indra/newview/lldrawpoolsimple.cpp index cdb22bf..330ac57 100644 --- a/linden/indra/newview/lldrawpoolsimple.cpp +++ b/linden/indra/newview/lldrawpoolsimple.cpp | |||
@@ -65,13 +65,10 @@ void LLDrawPoolGlow::render(S32 pass) | |||
65 | gPipeline.enableLightsFullbright(LLColor4(1,1,1,1)); | 65 | gPipeline.enableLightsFullbright(LLColor4(1,1,1,1)); |
66 | } | 66 | } |
67 | 67 | ||
68 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
69 | LLGLDepthTest depth(GL_TRUE, GL_FALSE); | 68 | LLGLDepthTest depth(GL_TRUE, GL_FALSE); |
70 | glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE); | 69 | glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE); |
71 | renderTexture(LLRenderPass::PASS_GLOW, getVertexDataMask()); | 70 | renderTexture(LLRenderPass::PASS_GLOW, getVertexDataMask()); |
72 | 71 | ||
73 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
74 | |||
75 | glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE); | 72 | glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE); |
76 | gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); | 73 | gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); |
77 | 74 | ||
@@ -101,10 +98,6 @@ void LLDrawPoolSimple::prerender() | |||
101 | void LLDrawPoolSimple::beginRenderPass(S32 pass) | 98 | void LLDrawPoolSimple::beginRenderPass(S32 pass) |
102 | { | 99 | { |
103 | LLFastTimer t(LLFastTimer::FTM_RENDER_SIMPLE); | 100 | LLFastTimer t(LLFastTimer::FTM_RENDER_SIMPLE); |
104 | glEnableClientState(GL_VERTEX_ARRAY); | ||
105 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
106 | glEnableClientState(GL_NORMAL_ARRAY); | ||
107 | glEnableClientState(GL_COLOR_ARRAY); | ||
108 | 101 | ||
109 | if (LLPipeline::sUnderWaterRender) | 102 | if (LLPipeline::sUnderWaterRender) |
110 | { | 103 | { |
@@ -136,7 +129,6 @@ void LLDrawPoolSimple::endRenderPass(S32 pass) | |||
136 | { | 129 | { |
137 | LLFastTimer t(LLFastTimer::FTM_RENDER_SIMPLE); | 130 | LLFastTimer t(LLFastTimer::FTM_RENDER_SIMPLE); |
138 | LLRenderPass::endRenderPass(pass); | 131 | LLRenderPass::endRenderPass(pass); |
139 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
140 | 132 | ||
141 | if (mVertexShaderLevel > 0){ | 133 | if (mVertexShaderLevel > 0){ |
142 | 134 | ||
@@ -177,7 +169,6 @@ void LLDrawPoolSimple::render(S32 pass) | |||
177 | } | 169 | } |
178 | LLFastTimer t(LLFastTimer::FTM_RENDER_FULLBRIGHT); | 170 | LLFastTimer t(LLFastTimer::FTM_RENDER_FULLBRIGHT); |
179 | U32 fullbright_mask = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD | LLVertexBuffer::MAP_COLOR; | 171 | U32 fullbright_mask = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD | LLVertexBuffer::MAP_COLOR; |
180 | glDisableClientState(GL_NORMAL_ARRAY); | ||
181 | renderTexture(LLRenderPass::PASS_FULLBRIGHT, fullbright_mask); | 172 | renderTexture(LLRenderPass::PASS_FULLBRIGHT, fullbright_mask); |
182 | } | 173 | } |
183 | 174 | ||
diff --git a/linden/indra/newview/lldrawpoolsky.cpp b/linden/indra/newview/lldrawpoolsky.cpp index ac5c389..e06bb6d 100644 --- a/linden/indra/newview/lldrawpoolsky.cpp +++ b/linden/indra/newview/lldrawpoolsky.cpp | |||
@@ -113,10 +113,6 @@ void LLDrawPoolSky::render(S32 pass) | |||
113 | LLVector3 origin = LLViewerCamera::getInstance()->getOrigin(); | 113 | LLVector3 origin = LLViewerCamera::getInstance()->getOrigin(); |
114 | glTranslatef(origin.mV[0], origin.mV[1], origin.mV[2]); | 114 | glTranslatef(origin.mV[0], origin.mV[1], origin.mV[2]); |
115 | 115 | ||
116 | glEnableClientState(GL_VERTEX_ARRAY); | ||
117 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
118 | glDisableClientState(GL_NORMAL_ARRAY); | ||
119 | |||
120 | S32 face_count = (S32)mDrawFace.size(); | 116 | S32 face_count = (S32)mDrawFace.size(); |
121 | 117 | ||
122 | for (S32 i = 0; i < llmin(6, face_count); ++i) | 118 | for (S32 i = 0; i < llmin(6, face_count); ++i) |
@@ -160,8 +156,6 @@ void LLDrawPoolSky::render(S32 pass) | |||
160 | // renderHeavenlyBody(1, hbfaces[1]); | 156 | // renderHeavenlyBody(1, hbfaces[1]); |
161 | } | 157 | } |
162 | 158 | ||
163 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
164 | |||
165 | glPopMatrix(); | 159 | glPopMatrix(); |
166 | } | 160 | } |
167 | 161 | ||
@@ -184,8 +178,6 @@ void LLDrawPoolSky::renderSkyCubeFace(U8 side) | |||
184 | glColor4f(1, 1, 1, LLSkyTex::getInterpVal()); // lighting is disabled | 178 | glColor4f(1, 1, 1, LLSkyTex::getInterpVal()); // lighting is disabled |
185 | face.renderIndexed(); | 179 | face.renderIndexed(); |
186 | } | 180 | } |
187 | |||
188 | mIndicesDrawn += face.getIndicesCount(); | ||
189 | } | 181 | } |
190 | 182 | ||
191 | void LLDrawPoolSky::renderHeavenlyBody(U8 hb, LLFace* face) | 183 | void LLDrawPoolSky::renderHeavenlyBody(U8 hb, LLFace* face) |
@@ -198,7 +190,6 @@ void LLDrawPoolSky::renderHeavenlyBody(U8 hb, LLFace* face) | |||
198 | LLColor4 color(mHB[hb]->getInterpColor()); | 190 | LLColor4 color(mHB[hb]->getInterpColor()); |
199 | LLOverrideFaceColor override(this, color); | 191 | LLOverrideFaceColor override(this, color); |
200 | face->renderIndexed(); | 192 | face->renderIndexed(); |
201 | mIndicesDrawn += face->getIndicesCount(); | ||
202 | } | 193 | } |
203 | 194 | ||
204 | 195 | ||
@@ -215,7 +206,6 @@ void LLDrawPoolSky::renderSunHalo(LLFace* face) | |||
215 | 206 | ||
216 | LLOverrideFaceColor override(this, color); | 207 | LLOverrideFaceColor override(this, color); |
217 | face->renderIndexed(); | 208 | face->renderIndexed(); |
218 | mIndicesDrawn += face->getIndicesCount(); | ||
219 | } | 209 | } |
220 | 210 | ||
221 | 211 | ||
diff --git a/linden/indra/newview/lldrawpoolterrain.cpp b/linden/indra/newview/lldrawpoolterrain.cpp index 1d43698..fdb27f9 100644 --- a/linden/indra/newview/lldrawpoolterrain.cpp +++ b/linden/indra/newview/lldrawpoolterrain.cpp | |||
@@ -217,14 +217,6 @@ void LLDrawPoolTerrain::render(S32 pass) | |||
217 | 217 | ||
218 | void LLDrawPoolTerrain::renderFullShader() | 218 | void LLDrawPoolTerrain::renderFullShader() |
219 | { | 219 | { |
220 | glEnableClientState(GL_VERTEX_ARRAY); | ||
221 | glEnableClientState(GL_NORMAL_ARRAY); | ||
222 | |||
223 | if (gPipeline.getLightingDetail() >= 2) | ||
224 | { | ||
225 | glEnableClientState(GL_COLOR_ARRAY); | ||
226 | } | ||
227 | |||
228 | // Hack! Get the region that this draw pool is rendering from! | 220 | // Hack! Get the region that this draw pool is rendering from! |
229 | LLViewerRegion *regionp = mDrawFace[0]->getDrawable()->getVObj()->getRegion(); | 221 | LLViewerRegion *regionp = mDrawFace[0]->getDrawable()->getVObj()->getRegion(); |
230 | LLVLComposition *compp = regionp->getComposition(); | 222 | LLVLComposition *compp = regionp->getComposition(); |
@@ -247,10 +239,8 @@ void LLDrawPoolTerrain::renderFullShader() | |||
247 | // | 239 | // |
248 | S32 detail0 = sShader->enableTexture(LLShaderMgr::TERRAIN_DETAIL0); | 240 | S32 detail0 = sShader->enableTexture(LLShaderMgr::TERRAIN_DETAIL0); |
249 | LLViewerImage::bindTexture(detail_texture0p,detail0); | 241 | LLViewerImage::bindTexture(detail_texture0p,detail0); |
250 | glClientActiveTextureARB(GL_TEXTURE0_ARB); | ||
251 | glActiveTextureARB(GL_TEXTURE0_ARB); | 242 | glActiveTextureARB(GL_TEXTURE0_ARB); |
252 | 243 | ||
253 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
254 | glEnable(GL_TEXTURE_GEN_S); | 244 | glEnable(GL_TEXTURE_GEN_S); |
255 | glEnable(GL_TEXTURE_GEN_T); | 245 | glEnable(GL_TEXTURE_GEN_T); |
256 | glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); | 246 | glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); |
@@ -269,9 +259,7 @@ void LLDrawPoolTerrain::renderFullShader() | |||
269 | LLViewerImage::bindTexture(detail_texture1p,detail1); | 259 | LLViewerImage::bindTexture(detail_texture1p,detail1); |
270 | 260 | ||
271 | /// ALPHA TEXTURE COORDS 0: | 261 | /// ALPHA TEXTURE COORDS 0: |
272 | glClientActiveTextureARB(GL_TEXTURE1_ARB); | ||
273 | glActiveTextureARB(GL_TEXTURE1_ARB); | 262 | glActiveTextureARB(GL_TEXTURE1_ARB); |
274 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
275 | glMatrixMode(GL_TEXTURE); | 263 | glMatrixMode(GL_TEXTURE); |
276 | glLoadIdentity(); | 264 | glLoadIdentity(); |
277 | glMatrixMode(GL_MODELVIEW); | 265 | glMatrixMode(GL_MODELVIEW); |
@@ -283,9 +271,7 @@ void LLDrawPoolTerrain::renderFullShader() | |||
283 | glEnable(GL_TEXTURE_2D); | 271 | glEnable(GL_TEXTURE_2D); |
284 | 272 | ||
285 | /// ALPHA TEXTURE COORDS 1: | 273 | /// ALPHA TEXTURE COORDS 1: |
286 | glClientActiveTextureARB(GL_TEXTURE2_ARB); | ||
287 | glActiveTextureARB(GL_TEXTURE2_ARB); | 274 | glActiveTextureARB(GL_TEXTURE2_ARB); |
288 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
289 | glMatrixMode(GL_TEXTURE); | 275 | glMatrixMode(GL_TEXTURE); |
290 | glLoadIdentity(); | 276 | glLoadIdentity(); |
291 | glTranslatef(-2.f, 0.f, 0.f); | 277 | glTranslatef(-2.f, 0.f, 0.f); |
@@ -298,9 +284,7 @@ void LLDrawPoolTerrain::renderFullShader() | |||
298 | LLViewerImage::bindTexture(detail_texture3p,detail3); | 284 | LLViewerImage::bindTexture(detail_texture3p,detail3); |
299 | 285 | ||
300 | /// ALPHA TEXTURE COORDS 2: | 286 | /// ALPHA TEXTURE COORDS 2: |
301 | glClientActiveTextureARB(GL_TEXTURE3_ARB); | ||
302 | glActiveTextureARB(GL_TEXTURE3_ARB); | 287 | glActiveTextureARB(GL_TEXTURE3_ARB); |
303 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
304 | glMatrixMode(GL_TEXTURE); | 288 | glMatrixMode(GL_TEXTURE); |
305 | glLoadIdentity(); | 289 | glLoadIdentity(); |
306 | glTranslatef(-1.f, 0.f, 0.f); | 290 | glTranslatef(-1.f, 0.f, 0.f); |
@@ -323,7 +307,6 @@ void LLDrawPoolTerrain::renderFullShader() | |||
323 | sShader->disableTexture(LLShaderMgr::TERRAIN_DETAIL3); | 307 | sShader->disableTexture(LLShaderMgr::TERRAIN_DETAIL3); |
324 | 308 | ||
325 | LLImageGL::unbindTexture(alpha_ramp, GL_TEXTURE_2D); | 309 | LLImageGL::unbindTexture(alpha_ramp, GL_TEXTURE_2D); |
326 | glClientActiveTextureARB(GL_TEXTURE4_ARB); | ||
327 | glActiveTextureARB(GL_TEXTURE4_ARB); | 310 | glActiveTextureARB(GL_TEXTURE4_ARB); |
328 | glDisable(GL_TEXTURE_2D); // Texture unit 4 | 311 | glDisable(GL_TEXTURE_2D); // Texture unit 4 |
329 | glDisable(GL_TEXTURE_GEN_S); | 312 | glDisable(GL_TEXTURE_GEN_S); |
@@ -333,10 +316,8 @@ void LLDrawPoolTerrain::renderFullShader() | |||
333 | glMatrixMode(GL_MODELVIEW); | 316 | glMatrixMode(GL_MODELVIEW); |
334 | 317 | ||
335 | LLImageGL::unbindTexture(detail3, GL_TEXTURE_2D); | 318 | LLImageGL::unbindTexture(detail3, GL_TEXTURE_2D); |
336 | glClientActiveTextureARB(GL_TEXTURE3_ARB); | ||
337 | glActiveTextureARB(GL_TEXTURE3_ARB); | 319 | glActiveTextureARB(GL_TEXTURE3_ARB); |
338 | glDisable(GL_TEXTURE_2D); | 320 | glDisable(GL_TEXTURE_2D); |
339 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
340 | glDisable(GL_TEXTURE_GEN_S); | 321 | glDisable(GL_TEXTURE_GEN_S); |
341 | glDisable(GL_TEXTURE_GEN_T); | 322 | glDisable(GL_TEXTURE_GEN_T); |
342 | glMatrixMode(GL_TEXTURE); | 323 | glMatrixMode(GL_TEXTURE); |
@@ -344,10 +325,8 @@ void LLDrawPoolTerrain::renderFullShader() | |||
344 | glMatrixMode(GL_MODELVIEW); | 325 | glMatrixMode(GL_MODELVIEW); |
345 | 326 | ||
346 | LLImageGL::unbindTexture(detail2, GL_TEXTURE_2D); | 327 | LLImageGL::unbindTexture(detail2, GL_TEXTURE_2D); |
347 | glClientActiveTextureARB(GL_TEXTURE2_ARB); | ||
348 | glActiveTextureARB(GL_TEXTURE2_ARB); | 328 | glActiveTextureARB(GL_TEXTURE2_ARB); |
349 | glDisable(GL_TEXTURE_2D); | 329 | glDisable(GL_TEXTURE_2D); |
350 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
351 | glDisable(GL_TEXTURE_GEN_S); | 330 | glDisable(GL_TEXTURE_GEN_S); |
352 | glDisable(GL_TEXTURE_GEN_T); | 331 | glDisable(GL_TEXTURE_GEN_T); |
353 | glMatrixMode(GL_TEXTURE); | 332 | glMatrixMode(GL_TEXTURE); |
@@ -355,10 +334,8 @@ void LLDrawPoolTerrain::renderFullShader() | |||
355 | glMatrixMode(GL_MODELVIEW); | 334 | glMatrixMode(GL_MODELVIEW); |
356 | 335 | ||
357 | LLImageGL::unbindTexture(detail1, GL_TEXTURE_2D); | 336 | LLImageGL::unbindTexture(detail1, GL_TEXTURE_2D); |
358 | glClientActiveTextureARB(GL_TEXTURE1_ARB); | ||
359 | glActiveTextureARB(GL_TEXTURE1_ARB); | 337 | glActiveTextureARB(GL_TEXTURE1_ARB); |
360 | glDisable(GL_TEXTURE_2D); | 338 | glDisable(GL_TEXTURE_2D); |
361 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
362 | glDisable(GL_TEXTURE_GEN_S); | 339 | glDisable(GL_TEXTURE_GEN_S); |
363 | glDisable(GL_TEXTURE_GEN_T); | 340 | glDisable(GL_TEXTURE_GEN_T); |
364 | glMatrixMode(GL_TEXTURE); | 341 | glMatrixMode(GL_TEXTURE); |
@@ -369,7 +346,6 @@ void LLDrawPoolTerrain::renderFullShader() | |||
369 | // Restore Texture Unit 0 defaults | 346 | // Restore Texture Unit 0 defaults |
370 | 347 | ||
371 | LLImageGL::unbindTexture(detail0, GL_TEXTURE_2D); | 348 | LLImageGL::unbindTexture(detail0, GL_TEXTURE_2D); |
372 | glClientActiveTextureARB(GL_TEXTURE0_ARB); | ||
373 | glActiveTextureARB(GL_TEXTURE0_ARB); | 349 | glActiveTextureARB(GL_TEXTURE0_ARB); |
374 | glEnable(GL_TEXTURE_2D); | 350 | glEnable(GL_TEXTURE_2D); |
375 | glDisable(GL_TEXTURE_GEN_S); | 351 | glDisable(GL_TEXTURE_GEN_S); |
@@ -377,14 +353,11 @@ void LLDrawPoolTerrain::renderFullShader() | |||
377 | glMatrixMode(GL_TEXTURE); | 353 | glMatrixMode(GL_TEXTURE); |
378 | glLoadIdentity(); | 354 | glLoadIdentity(); |
379 | glMatrixMode(GL_MODELVIEW); | 355 | glMatrixMode(GL_MODELVIEW); |
380 | |||
381 | // Restore non Texture Unit specific defaults | ||
382 | glDisableClientState(GL_NORMAL_ARRAY); | ||
383 | } | 356 | } |
384 | 357 | ||
385 | void LLDrawPoolTerrain::renderFull4TU() | 358 | void LLDrawPoolTerrain::renderFull4TU() |
386 | { | 359 | { |
387 | glEnableClientState(GL_VERTEX_ARRAY); | 360 | glEnableClientState(GL_VERTEX_ARRAY); |
388 | glEnableClientState(GL_NORMAL_ARRAY); | 361 | glEnableClientState(GL_NORMAL_ARRAY); |
389 | 362 | ||
390 | // Hack! Get the region that this draw pool is rendering from! | 363 | // Hack! Get the region that this draw pool is rendering from! |
@@ -434,9 +407,8 @@ void LLDrawPoolTerrain::renderFull4TU() | |||
434 | // | 407 | // |
435 | // Stage 1: Generate alpha ramp for detail0/detail1 transition | 408 | // Stage 1: Generate alpha ramp for detail0/detail1 transition |
436 | // | 409 | // |
437 | glActiveTextureARB(GL_TEXTURE1_ARB); | ||
438 | LLViewerImage::bindTexture(m2DAlphaRampImagep,1); | 410 | LLViewerImage::bindTexture(m2DAlphaRampImagep,1); |
439 | 411 | glActiveTextureARB(GL_TEXTURE1_ARB); | |
440 | glEnable(GL_TEXTURE_2D); // Texture unit 1 | 412 | glEnable(GL_TEXTURE_2D); // Texture unit 1 |
441 | glClientActiveTextureARB(GL_TEXTURE1_ARB); | 413 | glClientActiveTextureARB(GL_TEXTURE1_ARB); |
442 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | 414 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); |
@@ -454,8 +426,8 @@ void LLDrawPoolTerrain::renderFull4TU() | |||
454 | // | 426 | // |
455 | // Stage 2: Interpolate detail1 with existing based on ramp | 427 | // Stage 2: Interpolate detail1 with existing based on ramp |
456 | // | 428 | // |
457 | glActiveTextureARB(GL_TEXTURE2_ARB); | ||
458 | LLViewerImage::bindTexture(detail_texture1p,2); | 429 | LLViewerImage::bindTexture(detail_texture1p,2); |
430 | glActiveTextureARB(GL_TEXTURE2_ARB); | ||
459 | glEnable(GL_TEXTURE_2D); // Texture unit 2 | 431 | glEnable(GL_TEXTURE_2D); // Texture unit 2 |
460 | glClientActiveTextureARB(GL_TEXTURE2_ARB); | 432 | glClientActiveTextureARB(GL_TEXTURE2_ARB); |
461 | 433 | ||
@@ -480,8 +452,8 @@ void LLDrawPoolTerrain::renderFull4TU() | |||
480 | // | 452 | // |
481 | // Stage 3: Modulate with primary (vertex) color for lighting | 453 | // Stage 3: Modulate with primary (vertex) color for lighting |
482 | // | 454 | // |
483 | glActiveTextureARB(GL_TEXTURE3_ARB); | ||
484 | LLViewerImage::bindTexture(detail_texture1p,3); // bind any texture | 455 | LLViewerImage::bindTexture(detail_texture1p,3); // bind any texture |
456 | glActiveTextureARB(GL_TEXTURE3_ARB); | ||
485 | glEnable(GL_TEXTURE_2D); // Texture unit 3 | 457 | glEnable(GL_TEXTURE_2D); // Texture unit 3 |
486 | glClientActiveTextureARB(GL_TEXTURE3_ARB); | 458 | glClientActiveTextureARB(GL_TEXTURE3_ARB); |
487 | 459 | ||
@@ -494,6 +466,7 @@ void LLDrawPoolTerrain::renderFull4TU() | |||
494 | glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_PRIMARY_COLOR_ARB); | 466 | glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_PRIMARY_COLOR_ARB); |
495 | glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR); | 467 | glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR); |
496 | 468 | ||
469 | glActiveTextureARB(GL_TEXTURE0_ARB); | ||
497 | // GL_BLEND disabled by default | 470 | // GL_BLEND disabled by default |
498 | drawLoop(); | 471 | drawLoop(); |
499 | 472 | ||
@@ -524,9 +497,8 @@ void LLDrawPoolTerrain::renderFull4TU() | |||
524 | // | 497 | // |
525 | // Stage 1: Generate alpha ramp for detail2/detail3 transition | 498 | // Stage 1: Generate alpha ramp for detail2/detail3 transition |
526 | // | 499 | // |
527 | glActiveTextureARB(GL_TEXTURE1_ARB); | ||
528 | LLViewerImage::bindTexture(m2DAlphaRampImagep,1); | 500 | LLViewerImage::bindTexture(m2DAlphaRampImagep,1); |
529 | 501 | glActiveTextureARB(GL_TEXTURE1_ARB); | |
530 | glEnable(GL_TEXTURE_2D); // Texture unit 1 | 502 | glEnable(GL_TEXTURE_2D); // Texture unit 1 |
531 | glClientActiveTextureARB(GL_TEXTURE1_ARB); | 503 | glClientActiveTextureARB(GL_TEXTURE1_ARB); |
532 | 504 | ||
@@ -551,8 +523,8 @@ void LLDrawPoolTerrain::renderFull4TU() | |||
551 | // | 523 | // |
552 | // Stage 2: Interpolate detail2 with existing based on ramp | 524 | // Stage 2: Interpolate detail2 with existing based on ramp |
553 | // | 525 | // |
554 | glActiveTextureARB(GL_TEXTURE2_ARB); | ||
555 | LLViewerImage::bindTexture(detail_texture2p,2); | 526 | LLViewerImage::bindTexture(detail_texture2p,2); |
527 | glActiveTextureARB(GL_TEXTURE2_ARB); | ||
556 | glEnable(GL_TEXTURE_2D); // Texture unit 2 | 528 | glEnable(GL_TEXTURE_2D); // Texture unit 2 |
557 | glClientActiveTextureARB(GL_TEXTURE2_ARB); | 529 | glClientActiveTextureARB(GL_TEXTURE2_ARB); |
558 | 530 | ||
@@ -578,9 +550,9 @@ void LLDrawPoolTerrain::renderFull4TU() | |||
578 | // | 550 | // |
579 | // Stage 3: Generate alpha ramp for detail1/detail2 transition | 551 | // Stage 3: Generate alpha ramp for detail1/detail2 transition |
580 | // | 552 | // |
581 | glActiveTextureARB(GL_TEXTURE3_ARB); | ||
582 | LLViewerImage::bindTexture(m2DAlphaRampImagep,3); | 553 | LLViewerImage::bindTexture(m2DAlphaRampImagep,3); |
583 | 554 | glActiveTextureARB(GL_TEXTURE3_ARB); | |
555 | |||
584 | glEnable(GL_TEXTURE_2D); // Texture unit 3 | 556 | glEnable(GL_TEXTURE_2D); // Texture unit 3 |
585 | glClientActiveTextureARB(GL_TEXTURE3_ARB); | 557 | glClientActiveTextureARB(GL_TEXTURE3_ARB); |
586 | 558 | ||
@@ -603,7 +575,7 @@ void LLDrawPoolTerrain::renderFull4TU() | |||
603 | glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_TEXTURE); | 575 | glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_TEXTURE); |
604 | glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA); | 576 | glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA); |
605 | 577 | ||
606 | 578 | glActiveTextureARB(GL_TEXTURE0_ARB); | |
607 | { | 579 | { |
608 | LLGLEnable blend(GL_BLEND); | 580 | LLGLEnable blend(GL_BLEND); |
609 | drawLoop(); | 581 | drawLoop(); |
@@ -611,6 +583,7 @@ void LLDrawPoolTerrain::renderFull4TU() | |||
611 | 583 | ||
612 | // Disable multitexture | 584 | // Disable multitexture |
613 | LLImageGL::unbindTexture(3, GL_TEXTURE_2D); | 585 | LLImageGL::unbindTexture(3, GL_TEXTURE_2D); |
586 | glActiveTextureARB(GL_TEXTURE3_ARB); | ||
614 | glClientActiveTextureARB(GL_TEXTURE3_ARB); | 587 | glClientActiveTextureARB(GL_TEXTURE3_ARB); |
615 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | 588 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); |
616 | glDisable(GL_TEXTURE_2D); // Texture unit 3 | 589 | glDisable(GL_TEXTURE_2D); // Texture unit 3 |
@@ -619,6 +592,7 @@ void LLDrawPoolTerrain::renderFull4TU() | |||
619 | glMatrixMode(GL_MODELVIEW); | 592 | glMatrixMode(GL_MODELVIEW); |
620 | 593 | ||
621 | LLImageGL::unbindTexture(2, GL_TEXTURE_2D); | 594 | LLImageGL::unbindTexture(2, GL_TEXTURE_2D); |
595 | glActiveTextureARB(GL_TEXTURE2_ARB); | ||
622 | glClientActiveTextureARB(GL_TEXTURE2_ARB); | 596 | glClientActiveTextureARB(GL_TEXTURE2_ARB); |
623 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | 597 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); |
624 | glDisable(GL_TEXTURE_2D); // Texture unit 2 | 598 | glDisable(GL_TEXTURE_2D); // Texture unit 2 |
@@ -629,6 +603,7 @@ void LLDrawPoolTerrain::renderFull4TU() | |||
629 | glMatrixMode(GL_MODELVIEW); | 603 | glMatrixMode(GL_MODELVIEW); |
630 | 604 | ||
631 | LLImageGL::unbindTexture(1, GL_TEXTURE_2D); | 605 | LLImageGL::unbindTexture(1, GL_TEXTURE_2D); |
606 | glActiveTextureARB(GL_TEXTURE1_ARB); | ||
632 | glClientActiveTextureARB(GL_TEXTURE1_ARB); | 607 | glClientActiveTextureARB(GL_TEXTURE1_ARB); |
633 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | 608 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); |
634 | glDisable(GL_TEXTURE_2D); // Texture unit 1 | 609 | glDisable(GL_TEXTURE_2D); // Texture unit 1 |
@@ -642,6 +617,7 @@ void LLDrawPoolTerrain::renderFull4TU() | |||
642 | //---------------------------------------------------------------------------- | 617 | //---------------------------------------------------------------------------- |
643 | // Restore Texture Unit 0 defaults | 618 | // Restore Texture Unit 0 defaults |
644 | 619 | ||
620 | glActiveTextureARB(GL_TEXTURE0_ARB); | ||
645 | LLImageGL::unbindTexture(0, GL_TEXTURE_2D); | 621 | LLImageGL::unbindTexture(0, GL_TEXTURE_2D); |
646 | glClientActiveTextureARB(GL_TEXTURE0_ARB); | 622 | glClientActiveTextureARB(GL_TEXTURE0_ARB); |
647 | glActiveTextureARB(GL_TEXTURE0_ARB); | 623 | glActiveTextureARB(GL_TEXTURE0_ARB); |
@@ -658,9 +634,6 @@ void LLDrawPoolTerrain::renderFull4TU() | |||
658 | 634 | ||
659 | void LLDrawPoolTerrain::renderFull2TU() | 635 | void LLDrawPoolTerrain::renderFull2TU() |
660 | { | 636 | { |
661 | glEnableClientState(GL_VERTEX_ARRAY); | ||
662 | glEnableClientState(GL_NORMAL_ARRAY); | ||
663 | |||
664 | // Hack! Get the region that this draw pool is rendering from! | 637 | // Hack! Get the region that this draw pool is rendering from! |
665 | LLViewerRegion *regionp = mDrawFace[0]->getDrawable()->getVObj()->getRegion(); | 638 | LLViewerRegion *regionp = mDrawFace[0]->getDrawable()->getVObj()->getRegion(); |
666 | LLVLComposition *compp = regionp->getComposition(); | 639 | LLVLComposition *compp = regionp->getComposition(); |
@@ -687,9 +660,6 @@ void LLDrawPoolTerrain::renderFull2TU() | |||
687 | // Stage 0: Render detail 0 into base | 660 | // Stage 0: Render detail 0 into base |
688 | // | 661 | // |
689 | LLViewerImage::bindTexture(detail_texture0p,0); | 662 | LLViewerImage::bindTexture(detail_texture0p,0); |
690 | glClientActiveTextureARB(GL_TEXTURE0_ARB); | ||
691 | |||
692 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
693 | glEnable(GL_TEXTURE_GEN_S); | 663 | glEnable(GL_TEXTURE_GEN_S); |
694 | glEnable(GL_TEXTURE_GEN_T); | 664 | glEnable(GL_TEXTURE_GEN_T); |
695 | glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); | 665 | glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); |
@@ -715,12 +685,10 @@ void LLDrawPoolTerrain::renderFull2TU() | |||
715 | // Stage 0: Generate alpha ramp for detail0/detail1 transition | 685 | // Stage 0: Generate alpha ramp for detail0/detail1 transition |
716 | // | 686 | // |
717 | LLViewerImage::bindTexture(m2DAlphaRampImagep,0); | 687 | LLViewerImage::bindTexture(m2DAlphaRampImagep,0); |
718 | glClientActiveTextureARB(GL_TEXTURE0_ARB); | 688 | |
719 | |||
720 | glDisable(GL_TEXTURE_GEN_S); | 689 | glDisable(GL_TEXTURE_GEN_S); |
721 | glDisable(GL_TEXTURE_GEN_T); | 690 | glDisable(GL_TEXTURE_GEN_T); |
722 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | 691 | |
723 | |||
724 | // Care about alpha only | 692 | // Care about alpha only |
725 | glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB); | 693 | glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB); |
726 | glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE); | 694 | glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE); |
@@ -736,10 +704,8 @@ void LLDrawPoolTerrain::renderFull2TU() | |||
736 | // Stage 1: Write detail1 | 704 | // Stage 1: Write detail1 |
737 | // | 705 | // |
738 | LLViewerImage::bindTexture(detail_texture1p,1); // Texture unit 1 | 706 | LLViewerImage::bindTexture(detail_texture1p,1); // Texture unit 1 |
707 | glActiveTextureARB(GL_TEXTURE1_ARB); | ||
739 | glEnable(GL_TEXTURE_2D); // Texture unit 1 | 708 | glEnable(GL_TEXTURE_2D); // Texture unit 1 |
740 | glClientActiveTextureARB(GL_TEXTURE1_ARB); | ||
741 | |||
742 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
743 | glEnable(GL_TEXTURE_GEN_S); | 709 | glEnable(GL_TEXTURE_GEN_S); |
744 | glEnable(GL_TEXTURE_GEN_T); | 710 | glEnable(GL_TEXTURE_GEN_T); |
745 | glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); | 711 | glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); |
@@ -758,6 +724,7 @@ void LLDrawPoolTerrain::renderFull2TU() | |||
758 | glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_PREVIOUS); | 724 | glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_PREVIOUS); |
759 | glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA); | 725 | glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA); |
760 | 726 | ||
727 | glActiveTextureARB(GL_TEXTURE0_ARB); | ||
761 | { | 728 | { |
762 | LLGLEnable blend(GL_BLEND); | 729 | LLGLEnable blend(GL_BLEND); |
763 | drawLoop(); | 730 | drawLoop(); |
@@ -769,14 +736,11 @@ void LLDrawPoolTerrain::renderFull2TU() | |||
769 | // Stage 0: Generate alpha ramp for detail1/detail2 transition | 736 | // Stage 0: Generate alpha ramp for detail1/detail2 transition |
770 | // | 737 | // |
771 | LLViewerImage::bindTexture(m2DAlphaRampImagep,0); | 738 | LLViewerImage::bindTexture(m2DAlphaRampImagep,0); |
772 | glClientActiveTextureARB(GL_TEXTURE0_ARB); | ||
773 | // Set the texture matrix | 739 | // Set the texture matrix |
774 | glMatrixMode(GL_TEXTURE); | 740 | glMatrixMode(GL_TEXTURE); |
775 | glLoadIdentity(); | 741 | glLoadIdentity(); |
776 | glTranslatef(-1.f, 0.f, 0.f); | 742 | glTranslatef(-1.f, 0.f, 0.f); |
777 | 743 | ||
778 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
779 | |||
780 | // Care about alpha only | 744 | // Care about alpha only |
781 | glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB); | 745 | glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB); |
782 | glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE); | 746 | glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE); |
@@ -793,9 +757,7 @@ void LLDrawPoolTerrain::renderFull2TU() | |||
793 | 757 | ||
794 | LLViewerImage::bindTexture(detail_texture2p,1); | 758 | LLViewerImage::bindTexture(detail_texture2p,1); |
795 | glEnable(GL_TEXTURE_2D); // Texture unit 1 | 759 | glEnable(GL_TEXTURE_2D); // Texture unit 1 |
796 | glClientActiveTextureARB(GL_TEXTURE1_ARB); | 760 | |
797 | |||
798 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
799 | glEnable(GL_TEXTURE_GEN_S); | 761 | glEnable(GL_TEXTURE_GEN_S); |
800 | glEnable(GL_TEXTURE_GEN_T); | 762 | glEnable(GL_TEXTURE_GEN_T); |
801 | glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); | 763 | glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); |
@@ -826,14 +788,11 @@ void LLDrawPoolTerrain::renderFull2TU() | |||
826 | // Stage 0: Generate alpha ramp for detail2/detail3 transition | 788 | // Stage 0: Generate alpha ramp for detail2/detail3 transition |
827 | // | 789 | // |
828 | LLViewerImage::bindTexture(m2DAlphaRampImagep,0); | 790 | LLViewerImage::bindTexture(m2DAlphaRampImagep,0); |
829 | glClientActiveTextureARB(GL_TEXTURE0_ARB); | ||
830 | // Set the texture matrix | 791 | // Set the texture matrix |
831 | glMatrixMode(GL_TEXTURE); | 792 | glMatrixMode(GL_TEXTURE); |
832 | glLoadIdentity(); | 793 | glLoadIdentity(); |
833 | glTranslatef(-2.f, 0.f, 0.f); | 794 | glTranslatef(-2.f, 0.f, 0.f); |
834 | 795 | ||
835 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
836 | |||
837 | // Care about alpha only | 796 | // Care about alpha only |
838 | glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB); | 797 | glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB); |
839 | glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE); | 798 | glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE); |
@@ -847,10 +806,8 @@ void LLDrawPoolTerrain::renderFull2TU() | |||
847 | // Stage 1: Write detail3 | 806 | // Stage 1: Write detail3 |
848 | 807 | ||
849 | LLViewerImage::bindTexture(detail_texture3p,1); | 808 | LLViewerImage::bindTexture(detail_texture3p,1); |
809 | glActiveTextureARB(GL_TEXTURE1_ARB); | ||
850 | glEnable(GL_TEXTURE_2D); // Texture unit 1 | 810 | glEnable(GL_TEXTURE_2D); // Texture unit 1 |
851 | glClientActiveTextureARB(GL_TEXTURE1_ARB); | ||
852 | |||
853 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
854 | glEnable(GL_TEXTURE_GEN_S); | 811 | glEnable(GL_TEXTURE_GEN_S); |
855 | glEnable(GL_TEXTURE_GEN_T); | 812 | glEnable(GL_TEXTURE_GEN_T); |
856 | glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); | 813 | glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); |
@@ -869,6 +826,7 @@ void LLDrawPoolTerrain::renderFull2TU() | |||
869 | glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_PREVIOUS); | 826 | glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_PREVIOUS); |
870 | glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA); | 827 | glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA); |
871 | 828 | ||
829 | glActiveTextureARB(GL_TEXTURE0_ARB); | ||
872 | { | 830 | { |
873 | LLGLEnable blend(GL_BLEND); | 831 | LLGLEnable blend(GL_BLEND); |
874 | drawLoop(); | 832 | drawLoop(); |
@@ -879,8 +837,7 @@ void LLDrawPoolTerrain::renderFull2TU() | |||
879 | 837 | ||
880 | // Disable multitexture | 838 | // Disable multitexture |
881 | LLImageGL::unbindTexture(1, GL_TEXTURE_2D); | 839 | LLImageGL::unbindTexture(1, GL_TEXTURE_2D); |
882 | glClientActiveTextureARB(GL_TEXTURE1_ARB); | 840 | glActiveTextureARB(GL_TEXTURE1_ARB); |
883 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
884 | glDisable(GL_TEXTURE_2D); // Texture unit 1 | 841 | glDisable(GL_TEXTURE_2D); // Texture unit 1 |
885 | glDisable(GL_TEXTURE_GEN_S); | 842 | glDisable(GL_TEXTURE_GEN_S); |
886 | glDisable(GL_TEXTURE_GEN_T); | 843 | glDisable(GL_TEXTURE_GEN_T); |
@@ -891,9 +848,9 @@ void LLDrawPoolTerrain::renderFull2TU() | |||
891 | //---------------------------------------------------------------------------- | 848 | //---------------------------------------------------------------------------- |
892 | // Restore Texture Unit 0 defaults | 849 | // Restore Texture Unit 0 defaults |
893 | 850 | ||
851 | glActiveTextureARB(GL_TEXTURE0_ARB); | ||
894 | LLImageGL::unbindTexture(0, GL_TEXTURE_2D); | 852 | LLImageGL::unbindTexture(0, GL_TEXTURE_2D); |
895 | 853 | ||
896 | glClientActiveTextureARB(GL_TEXTURE0_ARB); | ||
897 | glActiveTextureARB(GL_TEXTURE0_ARB); | 854 | glActiveTextureARB(GL_TEXTURE0_ARB); |
898 | glDisable(GL_TEXTURE_GEN_S); | 855 | glDisable(GL_TEXTURE_GEN_S); |
899 | glDisable(GL_TEXTURE_GEN_T); | 856 | glDisable(GL_TEXTURE_GEN_T); |
@@ -902,16 +859,12 @@ void LLDrawPoolTerrain::renderFull2TU() | |||
902 | glMatrixMode(GL_MODELVIEW); | 859 | glMatrixMode(GL_MODELVIEW); |
903 | 860 | ||
904 | // Restore non Texture Unit specific defaults | 861 | // Restore non Texture Unit specific defaults |
905 | glDisableClientState(GL_NORMAL_ARRAY); | ||
906 | glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); | 862 | glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); |
907 | } | 863 | } |
908 | 864 | ||
909 | 865 | ||
910 | void LLDrawPoolTerrain::renderSimple() | 866 | void LLDrawPoolTerrain::renderSimple() |
911 | { | 867 | { |
912 | glEnableClientState(GL_VERTEX_ARRAY); | ||
913 | glEnableClientState(GL_NORMAL_ARRAY); | ||
914 | |||
915 | LLVector4 tp0, tp1; | 868 | LLVector4 tp0, tp1; |
916 | 869 | ||
917 | //---------------------------------------------------------------------------- | 870 | //---------------------------------------------------------------------------- |
@@ -923,14 +876,12 @@ void LLDrawPoolTerrain::renderSimple() | |||
923 | 876 | ||
924 | glActiveTextureARB(GL_TEXTURE0_ARB); | 877 | glActiveTextureARB(GL_TEXTURE0_ARB); |
925 | glEnable(GL_TEXTURE_2D); // Texture unit 2 | 878 | glEnable(GL_TEXTURE_2D); // Texture unit 2 |
926 | glClientActiveTextureARB(GL_TEXTURE0_ARB); | 879 | |
927 | |||
928 | LLVector3 origin_agent = mDrawFace[0]->getDrawable()->getVObj()->getRegion()->getOriginAgent(); | 880 | LLVector3 origin_agent = mDrawFace[0]->getDrawable()->getVObj()->getRegion()->getOriginAgent(); |
929 | F32 tscale = 1.f/256.f; | 881 | F32 tscale = 1.f/256.f; |
930 | tp0.setVec(tscale, 0.f, 0.0f, -1.f*(origin_agent.mV[0]/256.f)); | 882 | tp0.setVec(tscale, 0.f, 0.0f, -1.f*(origin_agent.mV[0]/256.f)); |
931 | tp1.setVec(0.f, tscale, 0.0f, -1.f*(origin_agent.mV[1]/256.f)); | 883 | tp1.setVec(0.f, tscale, 0.0f, -1.f*(origin_agent.mV[1]/256.f)); |
932 | 884 | ||
933 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
934 | glEnable(GL_TEXTURE_GEN_S); | 885 | glEnable(GL_TEXTURE_GEN_S); |
935 | glEnable(GL_TEXTURE_GEN_T); | 886 | glEnable(GL_TEXTURE_GEN_T); |
936 | glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); | 887 | glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); |
@@ -952,7 +903,6 @@ void LLDrawPoolTerrain::renderSimple() | |||
952 | // Restore Texture Unit 0 defaults | 903 | // Restore Texture Unit 0 defaults |
953 | 904 | ||
954 | LLImageGL::unbindTexture(0, GL_TEXTURE_2D); | 905 | LLImageGL::unbindTexture(0, GL_TEXTURE_2D); |
955 | glClientActiveTextureARB(GL_TEXTURE0_ARB); | ||
956 | glActiveTextureARB(GL_TEXTURE0_ARB); | 906 | glActiveTextureARB(GL_TEXTURE0_ARB); |
957 | glDisable(GL_TEXTURE_GEN_S); | 907 | glDisable(GL_TEXTURE_GEN_S); |
958 | glDisable(GL_TEXTURE_GEN_T); | 908 | glDisable(GL_TEXTURE_GEN_T); |
@@ -961,7 +911,6 @@ void LLDrawPoolTerrain::renderSimple() | |||
961 | glMatrixMode(GL_MODELVIEW); | 911 | glMatrixMode(GL_MODELVIEW); |
962 | 912 | ||
963 | // Restore non Texture Unit specific defaults | 913 | // Restore non Texture Unit specific defaults |
964 | glDisableClientState(GL_NORMAL_ARRAY); | ||
965 | glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); | 914 | glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); |
966 | } | 915 | } |
967 | 916 | ||
@@ -986,14 +935,8 @@ void LLDrawPoolTerrain::renderOwnership() | |||
986 | LLViewerParcelOverlay *overlayp = regionp->getParcelOverlay(); | 935 | LLViewerParcelOverlay *overlayp = regionp->getParcelOverlay(); |
987 | LLImageGL *texturep = overlayp->getTexture(); | 936 | LLImageGL *texturep = overlayp->getTexture(); |
988 | 937 | ||
989 | glEnableClientState(GL_VERTEX_ARRAY); | ||
990 | glDisableClientState(GL_NORMAL_ARRAY); | ||
991 | |||
992 | LLViewerImage::bindTexture(texturep); | 938 | LLViewerImage::bindTexture(texturep); |
993 | 939 | ||
994 | glClientActiveTextureARB(GL_TEXTURE0_ARB); | ||
995 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
996 | |||
997 | // *NOTE: Because the region is 256 meters wide, but has 257 pixels, the | 940 | // *NOTE: Because the region is 256 meters wide, but has 257 pixels, the |
998 | // texture coordinates for pixel 256x256 is not 1,1. This makes the | 941 | // texture coordinates for pixel 256x256 is not 1,1. This makes the |
999 | // ownership map not line up with the selection. We address this with | 942 | // ownership map not line up with the selection. We address this with |
@@ -1014,9 +957,6 @@ void LLDrawPoolTerrain::renderOwnership() | |||
1014 | glMatrixMode(GL_TEXTURE); | 957 | glMatrixMode(GL_TEXTURE); |
1015 | glPopMatrix(); | 958 | glPopMatrix(); |
1016 | glMatrixMode(GL_MODELVIEW); | 959 | glMatrixMode(GL_MODELVIEW); |
1017 | |||
1018 | // Restore non Texture Unit specific defaults | ||
1019 | glDisableClientState(GL_NORMAL_ARRAY); | ||
1020 | } | 960 | } |
1021 | 961 | ||
1022 | 962 | ||
diff --git a/linden/indra/newview/lldrawpooltree.cpp b/linden/indra/newview/lldrawpooltree.cpp index fd1ca8e..fd0a83c 100644 --- a/linden/indra/newview/lldrawpooltree.cpp +++ b/linden/indra/newview/lldrawpooltree.cpp | |||
@@ -67,9 +67,6 @@ void LLDrawPoolTree::prerender() | |||
67 | void LLDrawPoolTree::beginRenderPass(S32 pass) | 67 | void LLDrawPoolTree::beginRenderPass(S32 pass) |
68 | { | 68 | { |
69 | LLFastTimer t(LLFastTimer::FTM_RENDER_TREES); | 69 | LLFastTimer t(LLFastTimer::FTM_RENDER_TREES); |
70 | glEnableClientState(GL_VERTEX_ARRAY); | ||
71 | glEnableClientState(GL_NORMAL_ARRAY); | ||
72 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
73 | glAlphaFunc(GL_GREATER, 0.5f); | 70 | glAlphaFunc(GL_GREATER, 0.5f); |
74 | 71 | ||
75 | if (LLPipeline::sUnderWaterRender) | 72 | if (LLPipeline::sUnderWaterRender) |
@@ -110,9 +107,7 @@ void LLDrawPoolTree::endRenderPass(S32 pass) | |||
110 | { | 107 | { |
111 | LLFastTimer t(LLFastTimer::FTM_RENDER_TREES); | 108 | LLFastTimer t(LLFastTimer::FTM_RENDER_TREES); |
112 | glAlphaFunc(GL_GREATER, 0.01f); | 109 | glAlphaFunc(GL_GREATER, 0.01f); |
113 | glDisableClientState(GL_NORMAL_ARRAY); | 110 | |
114 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
115 | |||
116 | if (gPipeline.canUseWindLightShadersOnObjects()) | 111 | if (gPipeline.canUseWindLightShadersOnObjects()) |
117 | { | 112 | { |
118 | shader->unbind(); | 113 | shader->unbind(); |
@@ -126,9 +121,6 @@ void LLDrawPoolTree::renderForSelect() | |||
126 | return; | 121 | return; |
127 | } | 122 | } |
128 | 123 | ||
129 | glEnableClientState (GL_VERTEX_ARRAY); | ||
130 | glEnableClientState (GL_TEXTURE_COORD_ARRAY); | ||
131 | |||
132 | LLOverrideFaceColor color(this, 1.f, 1.f, 1.f, 1.f); | 124 | LLOverrideFaceColor color(this, 1.f, 1.f, 1.f, 1.f); |
133 | 125 | ||
134 | LLGLSObjectSelectAlpha gls_alpha; | 126 | LLGLSObjectSelectAlpha gls_alpha; |
@@ -155,7 +147,6 @@ void LLDrawPoolTree::renderForSelect() | |||
155 | gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); | 147 | gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); |
156 | 148 | ||
157 | glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); | 149 | glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); |
158 | glDisableClientState (GL_TEXTURE_COORD_ARRAY); | ||
159 | } | 150 | } |
160 | 151 | ||
161 | void LLDrawPoolTree::renderTree(BOOL selecting) | 152 | void LLDrawPoolTree::renderTree(BOOL selecting) |
@@ -278,8 +269,6 @@ void LLDrawPoolTree::renderTree(BOOL selecting) | |||
278 | //glPopMatrix(); | 269 | //glPopMatrix(); |
279 | } | 270 | } |
280 | } | 271 | } |
281 | |||
282 | addIndicesDrawn(indices_drawn); | ||
283 | } | 272 | } |
284 | 273 | ||
285 | BOOL LLDrawPoolTree::verify() const | 274 | BOOL LLDrawPoolTree::verify() const |
diff --git a/linden/indra/newview/lldrawpoolwater.cpp b/linden/indra/newview/lldrawpoolwater.cpp index 922a5d8..231d0e1 100644 --- a/linden/indra/newview/lldrawpoolwater.cpp +++ b/linden/indra/newview/lldrawpoolwater.cpp | |||
@@ -163,17 +163,11 @@ void LLDrawPoolWater::render(S32 pass) | |||
163 | 163 | ||
164 | LLGLDisable cullFace(GL_CULL_FACE); | 164 | LLGLDisable cullFace(GL_CULL_FACE); |
165 | 165 | ||
166 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
167 | glEnableClientState(GL_VERTEX_ARRAY); | ||
168 | glEnableClientState(GL_NORMAL_ARRAY); | ||
169 | |||
170 | // Set up second pass first | 166 | // Set up second pass first |
171 | glActiveTextureARB(GL_TEXTURE1_ARB); | ||
172 | mWaterImagep->addTextureStats(1024.f*1024.f); | 167 | mWaterImagep->addTextureStats(1024.f*1024.f); |
173 | mWaterImagep->bind(1); | 168 | mWaterImagep->bind(1); |
174 | 169 | glActiveTextureARB(GL_TEXTURE1_ARB); | |
175 | glClientActiveTextureARB(GL_TEXTURE1_ARB); | 170 | |
176 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
177 | glEnable(GL_TEXTURE_2D); // Texture unit 1 | 171 | glEnable(GL_TEXTURE_2D); // Texture unit 1 |
178 | 172 | ||
179 | LLVector3 camera_up = LLViewerCamera::getInstance()->getUpAxis(); | 173 | LLVector3 camera_up = LLViewerCamera::getInstance()->getUpAxis(); |
@@ -215,7 +209,6 @@ void LLDrawPoolWater::render(S32 pass) | |||
215 | glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_PREVIOUS_ARB); | 209 | glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_PREVIOUS_ARB); |
216 | glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA); | 210 | glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA); |
217 | 211 | ||
218 | glClientActiveTextureARB(GL_TEXTURE0_ARB); | ||
219 | glActiveTextureARB(GL_TEXTURE0_ARB); | 212 | glActiveTextureARB(GL_TEXTURE0_ARB); |
220 | 213 | ||
221 | glClearStencil(1); | 214 | glClearStencil(1); |
@@ -234,11 +227,9 @@ void LLDrawPoolWater::render(S32 pass) | |||
234 | } | 227 | } |
235 | face->bindTexture(); | 228 | face->bindTexture(); |
236 | face->renderIndexed(); | 229 | face->renderIndexed(); |
237 | mIndicesDrawn += face->getIndicesCount(); | ||
238 | } | 230 | } |
239 | 231 | ||
240 | // Now, disable texture coord generation on texture state 1 | 232 | // Now, disable texture coord generation on texture state 1 |
241 | glClientActiveTextureARB(GL_TEXTURE1_ARB); | ||
242 | glActiveTextureARB(GL_TEXTURE1_ARB); | 233 | glActiveTextureARB(GL_TEXTURE1_ARB); |
243 | glDisable(GL_TEXTURE_2D); // Texture unit 1 | 234 | glDisable(GL_TEXTURE_2D); // Texture unit 1 |
244 | glDisable(GL_TEXTURE_GEN_S); //texture unit 1 | 235 | glDisable(GL_TEXTURE_GEN_S); //texture unit 1 |
@@ -246,11 +237,9 @@ void LLDrawPoolWater::render(S32 pass) | |||
246 | LLImageGL::unbindTexture(1, GL_TEXTURE_2D); | 237 | LLImageGL::unbindTexture(1, GL_TEXTURE_2D); |
247 | 238 | ||
248 | // Disable texture coordinate and color arrays | 239 | // Disable texture coordinate and color arrays |
249 | glClientActiveTextureARB(GL_TEXTURE0_ARB); | ||
250 | glActiveTextureARB(GL_TEXTURE0_ARB); | 240 | glActiveTextureARB(GL_TEXTURE0_ARB); |
251 | LLImageGL::unbindTexture(0, GL_TEXTURE_2D); | 241 | LLImageGL::unbindTexture(0, GL_TEXTURE_2D); |
252 | 242 | ||
253 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
254 | stop_glerror(); | 243 | stop_glerror(); |
255 | 244 | ||
256 | if (gSky.mVOSkyp->getCubeMap()) | 245 | if (gSky.mVOSkyp->getCubeMap()) |
@@ -284,7 +273,6 @@ void LLDrawPoolWater::render(S32 pass) | |||
284 | if (face->getGeomCount() > 0) | 273 | if (face->getGeomCount() > 0) |
285 | { | 274 | { |
286 | face->renderIndexed(); | 275 | face->renderIndexed(); |
287 | mIndicesDrawn += face->getIndicesCount(); | ||
288 | } | 276 | } |
289 | } | 277 | } |
290 | 278 | ||
@@ -310,9 +298,6 @@ void LLDrawPoolWater::render(S32 pass) | |||
310 | renderReflection(refl_face); | 298 | renderReflection(refl_face); |
311 | } | 299 | } |
312 | 300 | ||
313 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
314 | glDisableClientState(GL_NORMAL_ARRAY); | ||
315 | |||
316 | glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); | 301 | glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); |
317 | } | 302 | } |
318 | 303 | ||
@@ -338,16 +323,10 @@ void LLDrawPoolWater::renderReflection(LLFace* face) | |||
338 | 323 | ||
339 | LLGLSNoFog noFog; | 324 | LLGLSNoFog noFog; |
340 | 325 | ||
341 | glEnableClientState(GL_VERTEX_ARRAY); | ||
342 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
343 | |||
344 | LLViewerImage::bindTexture(mHBTex[dr]); | 326 | LLViewerImage::bindTexture(mHBTex[dr]); |
345 | 327 | ||
346 | LLOverrideFaceColor override(this, face->getFaceColor().mV); | 328 | LLOverrideFaceColor override(this, face->getFaceColor().mV); |
347 | face->renderIndexed(); | 329 | face->renderIndexed(); |
348 | mIndicesDrawn += face->getIndicesCount(); | ||
349 | |||
350 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
351 | } | 330 | } |
352 | 331 | ||
353 | void LLDrawPoolWater::shade() | 332 | void LLDrawPoolWater::shade() |
@@ -361,10 +340,6 @@ void LLDrawPoolWater::shade() | |||
361 | return; | 340 | return; |
362 | } | 341 | } |
363 | 342 | ||
364 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
365 | glEnableClientState(GL_VERTEX_ARRAY); | ||
366 | glEnableClientState(GL_NORMAL_ARRAY); | ||
367 | |||
368 | LLGLDisable blend(GL_BLEND); | 343 | LLGLDisable blend(GL_BLEND); |
369 | 344 | ||
370 | LLColor3 light_diffuse(0,0,0); | 345 | LLColor3 light_diffuse(0,0,0); |
@@ -562,8 +537,6 @@ void LLDrawPoolWater::shade() | |||
562 | face->renderIndexed(); | 537 | face->renderIndexed(); |
563 | } | 538 | } |
564 | } | 539 | } |
565 | |||
566 | mIndicesDrawn += face->getIndicesCount(); | ||
567 | } | 540 | } |
568 | } | 541 | } |
569 | 542 | ||
@@ -576,8 +549,6 @@ void LLDrawPoolWater::shade() | |||
576 | shader->unbind(); | 549 | shader->unbind(); |
577 | 550 | ||
578 | glActiveTextureARB(GL_TEXTURE0_ARB); | 551 | glActiveTextureARB(GL_TEXTURE0_ARB); |
579 | glClientActiveTextureARB(GL_TEXTURE0_ARB); | ||
580 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
581 | glEnable(GL_TEXTURE_2D); | 552 | glEnable(GL_TEXTURE_2D); |
582 | glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_FALSE); | 553 | glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_FALSE); |
583 | 554 | ||
diff --git a/linden/indra/newview/lldrawpoolwlsky.cpp b/linden/indra/newview/lldrawpoolwlsky.cpp index d18f0de..e10cd0a 100644 --- a/linden/indra/newview/lldrawpoolwlsky.cpp +++ b/linden/indra/newview/lldrawpoolwlsky.cpp | |||
@@ -159,9 +159,7 @@ void LLDrawPoolWLSky::renderStars(void) const | |||
159 | // combiners blending below requires something to be bound | 159 | // combiners blending below requires something to be bound |
160 | // and we might as well only bind once. | 160 | // and we might as well only bind once. |
161 | //LLGLEnable gl_texture_2d(GL_TEXTURE_2D); | 161 | //LLGLEnable gl_texture_2d(GL_TEXTURE_2D); |
162 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | 162 | |
163 | glDisableClientState(GL_NORMAL_ARRAY); | ||
164 | |||
165 | gPipeline.disableLights(); | 163 | gPipeline.disableLights(); |
166 | 164 | ||
167 | if (!LLPipeline::sReflectionRender) | 165 | if (!LLPipeline::sReflectionRender) |
@@ -224,9 +222,6 @@ void LLDrawPoolWLSky::renderSkyClouds(F32 camHeightLocal) const | |||
224 | 222 | ||
225 | void LLDrawPoolWLSky::renderHeavenlyBodies() | 223 | void LLDrawPoolWLSky::renderHeavenlyBodies() |
226 | { | 224 | { |
227 | glEnableClientState(GL_VERTEX_ARRAY); | ||
228 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
229 | glDisableClientState(GL_NORMAL_ARRAY); | ||
230 | LLGLSPipelineSkyBox gls_skybox; | 225 | LLGLSPipelineSkyBox gls_skybox; |
231 | LLGLEnable blend_on(GL_BLEND); | 226 | LLGLEnable blend_on(GL_BLEND); |
232 | gPipeline.disableLights(); | 227 | gPipeline.disableLights(); |
@@ -240,7 +235,6 @@ void LLDrawPoolWLSky::renderHeavenlyBodies() | |||
240 | LLColor4 color(gSky.mVOSkyp->getSun().getInterpColor()); | 235 | LLColor4 color(gSky.mVOSkyp->getSun().getInterpColor()); |
241 | LLFacePool::LLOverrideFaceColor color_override(this, color); | 236 | LLFacePool::LLOverrideFaceColor color_override(this, color); |
242 | face->renderIndexed(); | 237 | face->renderIndexed(); |
243 | mIndicesDrawn += face->getIndicesCount(); | ||
244 | } | 238 | } |
245 | #endif | 239 | #endif |
246 | 240 | ||
@@ -264,10 +258,7 @@ void LLDrawPoolWLSky::renderHeavenlyBodies() | |||
264 | 258 | ||
265 | LLFacePool::LLOverrideFaceColor color_override(this, color); | 259 | LLFacePool::LLOverrideFaceColor color_override(this, color); |
266 | face->renderIndexed(); | 260 | face->renderIndexed(); |
267 | mIndicesDrawn += face->getIndicesCount(); | ||
268 | } | 261 | } |
269 | |||
270 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
271 | } | 262 | } |
272 | 263 | ||
273 | void LLDrawPoolWLSky::render(S32 pass) | 264 | void LLDrawPoolWLSky::render(S32 pass) |
diff --git a/linden/indra/newview/llface.cpp b/linden/indra/newview/llface.cpp index 0c8de14..f480d8d 100644 --- a/linden/indra/newview/llface.cpp +++ b/linden/indra/newview/llface.cpp | |||
@@ -263,8 +263,14 @@ void LLFace::setDrawable(LLDrawable *drawable) | |||
263 | 263 | ||
264 | void LLFace::setSize(const S32 num_vertices, const S32 num_indices) | 264 | void LLFace::setSize(const S32 num_vertices, const S32 num_indices) |
265 | { | 265 | { |
266 | mGeomCount = num_vertices; | 266 | if (mGeomCount != num_vertices || |
267 | mIndicesCount = num_indices; | 267 | mIndicesCount != num_indices) |
268 | { | ||
269 | mGeomCount = num_vertices; | ||
270 | mIndicesCount = num_indices; | ||
271 | mVertexBuffer = NULL; | ||
272 | mLastVertexBuffer = NULL; | ||
273 | } | ||
268 | } | 274 | } |
269 | 275 | ||
270 | //============================================================================ | 276 | //============================================================================ |
@@ -368,8 +374,6 @@ void LLFace::renderForSelect(U32 data_mask) | |||
368 | #if !LL_RELEASE_FOR_DOWNLOAD | 374 | #if !LL_RELEASE_FOR_DOWNLOAD |
369 | LLGLState::checkClientArrays(data_mask); | 375 | LLGLState::checkClientArrays(data_mask); |
370 | #endif | 376 | #endif |
371 | U16* indicesp = (U16*) mVertexBuffer->getIndicesPointer() + mIndicesIndex; | ||
372 | |||
373 | if (gPickFaces && mTEOffset != -1) | 377 | if (gPickFaces && mTEOffset != -1) |
374 | { | 378 | { |
375 | // mask off high 4 bits (16 total possible faces) | 379 | // mask off high 4 bits (16 total possible faces) |
@@ -386,40 +390,26 @@ void LLFace::renderForSelect(U32 data_mask) | |||
386 | { | 390 | { |
387 | glPushMatrix(); | 391 | glPushMatrix(); |
388 | glMultMatrixf((float*) mDrawablep->getRegion()->mRenderMatrix.mMatrix); | 392 | glMultMatrixf((float*) mDrawablep->getRegion()->mRenderMatrix.mMatrix); |
389 | glDrawElements(GL_TRIANGLES, mIndicesCount, GL_UNSIGNED_SHORT, indicesp); | 393 | mVertexBuffer->draw(LLVertexBuffer::TRIANGLES, mIndicesCount, mIndicesIndex); |
390 | glPopMatrix(); | 394 | glPopMatrix(); |
391 | } | 395 | } |
392 | else | 396 | else |
393 | { | 397 | { |
394 | glDrawElements(GL_TRIANGLES, mIndicesCount, GL_UNSIGNED_SHORT, indicesp); | 398 | mVertexBuffer->draw(LLVertexBuffer::TRIANGLES, mIndicesCount, mIndicesIndex); |
395 | } | 399 | } |
396 | } | 400 | } |
397 | else | 401 | else |
398 | { | 402 | { |
399 | glPushMatrix(); | 403 | glPushMatrix(); |
400 | glMultMatrixf((float*)getRenderMatrix().mMatrix); | 404 | glMultMatrixf((float*)getRenderMatrix().mMatrix); |
401 | glDrawElements(GL_TRIANGLES, mIndicesCount, GL_UNSIGNED_SHORT, indicesp); | 405 | mVertexBuffer->draw(LLVertexBuffer::TRIANGLES, mIndicesCount, mIndicesIndex); |
402 | glPopMatrix(); | ||
403 | } | ||
404 | } | ||
405 | else if (mGeomCount > 0) | ||
406 | { | ||
407 | if (isState(GLOBAL)) | ||
408 | { | ||
409 | glDrawArrays(GL_TRIANGLES, mGeomIndex, mGeomCount); | ||
410 | } | ||
411 | else | ||
412 | { | ||
413 | glPushMatrix(); | ||
414 | glMultMatrixf((float*)getRenderMatrix().mMatrix); | ||
415 | glDrawArrays(GL_TRIANGLES, mGeomIndex, mGeomCount); | ||
416 | glPopMatrix(); | 406 | glPopMatrix(); |
417 | } | 407 | } |
418 | } | 408 | } |
419 | } | 409 | } |
420 | } | 410 | } |
421 | 411 | ||
422 | void LLFace::renderSelected(LLImageGL *imagep, const LLColor4& color, const S32 offset, const S32 count) | 412 | void LLFace::renderSelected(LLImageGL *imagep, const LLColor4& color) |
423 | { | 413 | { |
424 | if(mDrawablep.isNull() || mVertexBuffer.isNull()) | 414 | if(mDrawablep.isNull() || mVertexBuffer.isNull()) |
425 | { | 415 | { |
@@ -443,27 +433,12 @@ void LLFace::renderSelected(LLImageGL *imagep, const LLColor4& color, const S32 | |||
443 | glMultMatrixf((GLfloat*)mDrawablep->getRegion()->mRenderMatrix.mMatrix); | 433 | glMultMatrixf((GLfloat*)mDrawablep->getRegion()->mRenderMatrix.mMatrix); |
444 | } | 434 | } |
445 | 435 | ||
446 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
447 | glEnableClientState(GL_VERTEX_ARRAY); | ||
448 | glEnableClientState(GL_NORMAL_ARRAY); | ||
449 | |||
450 | mVertexBuffer->setBuffer(LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_NORMAL | LLVertexBuffer::MAP_TEXCOORD); | 436 | mVertexBuffer->setBuffer(LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_NORMAL | LLVertexBuffer::MAP_TEXCOORD); |
451 | #if !LL_RELEASE_FOR_DOWNLOAD | 437 | #if !LL_RELEASE_FOR_DOWNLOAD |
452 | LLGLState::checkClientArrays(LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_NORMAL | LLVertexBuffer::MAP_TEXCOORD); | 438 | LLGLState::checkClientArrays(LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_NORMAL | LLVertexBuffer::MAP_TEXCOORD); |
453 | #endif | 439 | #endif |
454 | U16* indicesp = ((U16*) mVertexBuffer->getIndicesPointer()) + mIndicesIndex; | 440 | mVertexBuffer->draw(LLVertexBuffer::TRIANGLES, mIndicesCount, mIndicesIndex); |
455 | 441 | ||
456 | if (count) | ||
457 | { | ||
458 | glDrawElements(GL_TRIANGLES, count, GL_UNSIGNED_SHORT, indicesp + offset); | ||
459 | } | ||
460 | else | ||
461 | { | ||
462 | glDrawElements(GL_TRIANGLES, mIndicesCount, GL_UNSIGNED_SHORT, indicesp); | ||
463 | } | ||
464 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
465 | glDisableClientState(GL_NORMAL_ARRAY); | ||
466 | |||
467 | glPopMatrix(); | 442 | glPopMatrix(); |
468 | } | 443 | } |
469 | } | 444 | } |
@@ -542,8 +517,6 @@ void LLFace::renderSelectedUV(const S32 offset, const S32 count) | |||
542 | } | 517 | } |
543 | else | 518 | else |
544 | { | 519 | { |
545 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
546 | glEnableClientState(GL_VERTEX_ARRAY); | ||
547 | llassert(mGeomIndex >= 0); | 520 | llassert(mGeomIndex >= 0); |
548 | if (count) | 521 | if (count) |
549 | { | 522 | { |
@@ -568,7 +541,6 @@ void LLFace::renderSelectedUV(const S32 offset, const S32 count) | |||
568 | glDrawArrays(GL_TRIANGLES, mGeomIndex, mGeomCount); | 541 | glDrawArrays(GL_TRIANGLES, mGeomIndex, mGeomCount); |
569 | } | 542 | } |
570 | } | 543 | } |
571 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
572 | } | 544 | } |
573 | 545 | ||
574 | glDisable(GL_POLYGON_OFFSET_FILL); | 546 | glDisable(GL_POLYGON_OFFSET_FILL); |
@@ -1251,16 +1223,7 @@ S32 LLFace::pushVertices(const U16* index_array) const | |||
1251 | { | 1223 | { |
1252 | if (mIndicesCount) | 1224 | if (mIndicesCount) |
1253 | { | 1225 | { |
1254 | if (mGeomCount <= gGLManager.mGLMaxVertexRange && | 1226 | mVertexBuffer->drawRange(LLVertexBuffer::TRIANGLES, mGeomIndex, mGeomIndex+mGeomCount-1, mIndicesCount, mIndicesIndex); |
1255 | mIndicesCount <= (U32) gGLManager.mGLMaxIndexRange) | ||
1256 | { | ||
1257 | glDrawRangeElements(GL_TRIANGLES, mGeomIndex, mGeomIndex + mGeomCount-1, mIndicesCount, | ||
1258 | GL_UNSIGNED_SHORT, index_array + mIndicesIndex); | ||
1259 | } | ||
1260 | else | ||
1261 | { | ||
1262 | glDrawElements(GL_TRIANGLES, mIndicesCount, GL_UNSIGNED_SHORT, index_array+mIndicesIndex); | ||
1263 | } | ||
1264 | gPipeline.addTrianglesDrawn(mIndicesCount/3); | 1227 | gPipeline.addTrianglesDrawn(mIndicesCount/3); |
1265 | } | 1228 | } |
1266 | 1229 | ||
diff --git a/linden/indra/newview/llface.h b/linden/indra/newview/llface.h index 4454bd6..f04d221 100644 --- a/linden/indra/newview/llface.h +++ b/linden/indra/newview/llface.h | |||
@@ -167,7 +167,7 @@ public: | |||
167 | void renderSelectedUV(const S32 offset = 0, const S32 count = 0); | 167 | void renderSelectedUV(const S32 offset = 0, const S32 count = 0); |
168 | 168 | ||
169 | void renderForSelect(U32 data_mask = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD); | 169 | void renderForSelect(U32 data_mask = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD); |
170 | void renderSelected(LLImageGL *image, const LLColor4 &color, const S32 offset = 0, const S32 count = 0); | 170 | void renderSelected(LLImageGL *image, const LLColor4 &color); |
171 | 171 | ||
172 | F32 getKey() const { return mDistance; } | 172 | F32 getKey() const { return mDistance; } |
173 | 173 | ||
diff --git a/linden/indra/newview/llflexibleobject.cpp b/linden/indra/newview/llflexibleobject.cpp index fe7fafa..ec49c1a 100644 --- a/linden/indra/newview/llflexibleobject.cpp +++ b/linden/indra/newview/llflexibleobject.cpp | |||
@@ -195,7 +195,7 @@ void LLVolumeImplFlexible::remapSections(LLFlexibleObjectSection *source, S32 so | |||
195 | 195 | ||
196 | 196 | ||
197 | //----------------------------------------------------------------------------- | 197 | //----------------------------------------------------------------------------- |
198 | void LLVolumeImplFlexible::setAttributesOfAllSections() | 198 | void LLVolumeImplFlexible::setAttributesOfAllSections(LLVector3* inScale) |
199 | { | 199 | { |
200 | LLVector2 bottom_scale, top_scale; | 200 | LLVector2 bottom_scale, top_scale; |
201 | F32 begin_rot = 0, end_rot = 0; | 201 | F32 begin_rot = 0, end_rot = 0; |
@@ -215,8 +215,16 @@ void LLVolumeImplFlexible::setAttributesOfAllSections() | |||
215 | 215 | ||
216 | S32 num_sections = 1 << mSimulateRes; | 216 | S32 num_sections = 1 << mSimulateRes; |
217 | 217 | ||
218 | LLVector3 scale = mVO->mDrawable->getScale(); | 218 | LLVector3 scale; |
219 | 219 | if (inScale == (LLVector3*)NULL) | |
220 | { | ||
221 | scale = mVO->mDrawable->getScale(); | ||
222 | } | ||
223 | else | ||
224 | { | ||
225 | scale = *inScale; | ||
226 | } | ||
227 | |||
220 | mSection[0].mPosition = getAnchorPosition(); | 228 | mSection[0].mPosition = getAnchorPosition(); |
221 | mSection[0].mDirection = LLVector3::z_axis * getFrameRotation(); | 229 | mSection[0].mDirection = LLVector3::z_axis * getFrameRotation(); |
222 | mSection[0].mdPosition = mSection[0].mDirection; | 230 | mSection[0].mdPosition = mSection[0].mDirection; |
@@ -297,7 +305,7 @@ BOOL LLVolumeImplFlexible::doIdleUpdate(LLAgent &agent, LLWorld &world, const F6 | |||
297 | new_res = mRenderRes; | 305 | new_res = mRenderRes; |
298 | } | 306 | } |
299 | 307 | ||
300 | if (!mInitialized || (mSimulateRes != new_res)) | 308 | if (!mInitialized) |
301 | { | 309 | { |
302 | mSimulateRes = new_res; | 310 | mSimulateRes = new_res; |
303 | setAttributesOfAllSections(); | 311 | setAttributesOfAllSections(); |
@@ -644,7 +652,7 @@ void LLVolumeImplFlexible::doFlexibleRebuild() | |||
644 | 652 | ||
645 | void LLVolumeImplFlexible::onSetScale(const LLVector3& scale, BOOL damped) | 653 | void LLVolumeImplFlexible::onSetScale(const LLVector3& scale, BOOL damped) |
646 | { | 654 | { |
647 | setAttributesOfAllSections(); | 655 | setAttributesOfAllSections((LLVector3*) &scale); |
648 | } | 656 | } |
649 | 657 | ||
650 | BOOL LLVolumeImplFlexible::doUpdateGeometry(LLDrawable *drawable) | 658 | BOOL LLVolumeImplFlexible::doUpdateGeometry(LLDrawable *drawable) |
diff --git a/linden/indra/newview/llflexibleobject.h b/linden/indra/newview/llflexibleobject.h index f6e68fc..843a8f8 100644 --- a/linden/indra/newview/llflexibleobject.h +++ b/linden/indra/newview/llflexibleobject.h | |||
@@ -138,7 +138,7 @@ class LLVolumeImplFlexible : public LLVolumeInterface | |||
138 | //-------------------------------------- | 138 | //-------------------------------------- |
139 | // private methods | 139 | // private methods |
140 | //-------------------------------------- | 140 | //-------------------------------------- |
141 | void setAttributesOfAllSections (); | 141 | void setAttributesOfAllSections (LLVector3* inScale = NULL); |
142 | 142 | ||
143 | void remapSections(LLFlexibleObjectSection *source, S32 source_sections, | 143 | void remapSections(LLFlexibleObjectSection *source, S32 source_sections, |
144 | LLFlexibleObjectSection *dest, S32 dest_sections); | 144 | LLFlexibleObjectSection *dest, S32 dest_sections); |
diff --git a/linden/indra/newview/llfloateranimpreview.cpp b/linden/indra/newview/llfloateranimpreview.cpp index 6892b8d..1ea0495 100644 --- a/linden/indra/newview/llfloateranimpreview.cpp +++ b/linden/indra/newview/llfloateranimpreview.cpp | |||
@@ -293,7 +293,6 @@ BOOL LLFloaterAnimPreview::postBuild() | |||
293 | mAnimPreview = NULL; | 293 | mAnimPreview = NULL; |
294 | mMotionID.setNull(); | 294 | mMotionID.setNull(); |
295 | childSetValue("bad_animation_text", getString("failed_to_initialize")); | 295 | childSetValue("bad_animation_text", getString("failed_to_initialize")); |
296 | setEnabled(FALSE); | ||
297 | } | 296 | } |
298 | } | 297 | } |
299 | else | 298 | else |
diff --git a/linden/indra/newview/llfloaterauction.cpp b/linden/indra/newview/llfloaterauction.cpp index 6b1c3e0..7affff6 100644 --- a/linden/indra/newview/llfloaterauction.cpp +++ b/linden/indra/newview/llfloaterauction.cpp | |||
@@ -53,6 +53,7 @@ | |||
53 | #include "llviewerdisplay.h" | 53 | #include "llviewerdisplay.h" |
54 | #include "llviewercontrol.h" | 54 | #include "llviewercontrol.h" |
55 | #include "llui.h" | 55 | #include "llui.h" |
56 | #include "llglimmediate.h" | ||
56 | 57 | ||
57 | ///---------------------------------------------------------------------------- | 58 | ///---------------------------------------------------------------------------- |
58 | /// Local function declarations, constants, enums, and typedefs | 59 | /// Local function declarations, constants, enums, and typedefs |
@@ -153,7 +154,7 @@ void LLFloaterAuction::draw() | |||
153 | } | 154 | } |
154 | { | 155 | { |
155 | LLGLSUIDefault gls_ui; | 156 | LLGLSUIDefault gls_ui; |
156 | glColor3f(1.f, 1.f, 1.f); | 157 | gGL.color3f(1.f, 1.f, 1.f); |
157 | gl_draw_scaled_image(rect.mLeft, | 158 | gl_draw_scaled_image(rect.mLeft, |
158 | rect.mBottom, | 159 | rect.mBottom, |
159 | rect.getWidth(), | 160 | rect.getWidth(), |
diff --git a/linden/indra/newview/llfloaterhud.cpp b/linden/indra/newview/llfloaterhud.cpp index 2f192f7..d93e36a 100644 --- a/linden/indra/newview/llfloaterhud.cpp +++ b/linden/indra/newview/llfloaterhud.cpp | |||
@@ -51,16 +51,20 @@ LLFloaterHUD::LLFloaterHUD() | |||
51 | : LLFloater("floater_hud"), | 51 | : LLFloater("floater_hud"), |
52 | mWebBrowser(0) | 52 | mWebBrowser(0) |
53 | { | 53 | { |
54 | // Create floater from its XML definition | ||
55 | LLUICtrlFactory::getInstance()->buildFloater(this, "floater_hud.xml"); | ||
56 | |||
54 | // Don't grab the focus as it will impede performing in-world actions | 57 | // Don't grab the focus as it will impede performing in-world actions |
55 | // while using the HUD | 58 | // while using the HUD |
56 | setAutoFocus(FALSE); | 59 | setIsChrome(TRUE); |
60 | |||
61 | // Chrome doesn't show the window title by default, but here we | ||
62 | // want to show it. | ||
63 | setTitleVisible(true); | ||
57 | 64 | ||
58 | // Opaque background since we never get the focus | 65 | // Opaque background since we never get the focus |
59 | setBackgroundOpaque(TRUE); | 66 | setBackgroundOpaque(TRUE); |
60 | 67 | ||
61 | // Create floater from its XML definition | ||
62 | LLUICtrlFactory::getInstance()->buildFloater(this, "floater_hud.xml"); | ||
63 | |||
64 | // Position floater based on saved location | 68 | // Position floater based on saved location |
65 | LLRect saved_position_rect = gSavedSettings.getRect("FloaterHUDRect"); | 69 | LLRect saved_position_rect = gSavedSettings.getRect("FloaterHUDRect"); |
66 | reshape(saved_position_rect.getWidth(), saved_position_rect.getHeight(), FALSE); | 70 | reshape(saved_position_rect.getWidth(), saved_position_rect.getHeight(), FALSE); |
@@ -69,12 +73,14 @@ LLFloaterHUD::LLFloaterHUD() | |||
69 | mWebBrowser = getChild<LLWebBrowserCtrl>("floater_hud_browser" ); | 73 | mWebBrowser = getChild<LLWebBrowserCtrl>("floater_hud_browser" ); |
70 | if (mWebBrowser) | 74 | if (mWebBrowser) |
71 | { | 75 | { |
72 | // Always refresh the browser | ||
73 | mWebBrowser->setAlwaysRefresh(true); | ||
74 | |||
75 | // Open links in internal browser | 76 | // Open links in internal browser |
76 | mWebBrowser->setOpenInExternalBrowser(false); | 77 | mWebBrowser->setOpenInExternalBrowser(false); |
77 | 78 | ||
79 | // This is a "chrome" floater, so we don't want anything to | ||
80 | // take focus (as the user needs to be able to walk with | ||
81 | // arrow keys during tutorial). | ||
82 | mWebBrowser->setTakeFocusOnClick(false); | ||
83 | |||
78 | LLString language(gSavedSettings.getString("Language")); | 84 | LLString language(gSavedSettings.getString("Language")); |
79 | if(language == "default") | 85 | if(language == "default") |
80 | { | 86 | { |
@@ -132,9 +138,3 @@ void LLFloaterHUD::close() | |||
132 | { | 138 | { |
133 | if (sInstance) sInstance->close(); | 139 | if (sInstance) sInstance->close(); |
134 | } | 140 | } |
135 | |||
136 | void LLFloaterHUD::onFocusReceived() | ||
137 | { | ||
138 | // Never get the focus | ||
139 | setFocus(FALSE); | ||
140 | } | ||
diff --git a/linden/indra/newview/llfloaterhud.h b/linden/indra/newview/llfloaterhud.h index bd60d7b..95c0f8d 100644 --- a/linden/indra/newview/llfloaterhud.h +++ b/linden/indra/newview/llfloaterhud.h | |||
@@ -58,7 +58,7 @@ protected: | |||
58 | LLWebBrowserCtrl* mWebBrowser; ///< the actual web browser control | 58 | LLWebBrowserCtrl* mWebBrowser; ///< the actual web browser control |
59 | 59 | ||
60 | LLFloaterHUD(); ///< default constructor | 60 | LLFloaterHUD(); ///< default constructor |
61 | virtual void onFocusReceived(); ///< called when we get the focus | 61 | |
62 | private: | 62 | private: |
63 | static LLFloaterHUD* sInstance; | 63 | static LLFloaterHUD* sInstance; |
64 | }; | 64 | }; |
diff --git a/linden/indra/newview/llmemoryview.cpp b/linden/indra/newview/llmemoryview.cpp index c7a929d..a19328a 100644 --- a/linden/indra/newview/llmemoryview.cpp +++ b/linden/indra/newview/llmemoryview.cpp | |||
@@ -121,6 +121,8 @@ static const struct mtv_display_info mtv_display_table[] = | |||
121 | { LLMemType::MTYPE_VERTEX_DATA, "Vertex Buffer", &LLColor4::blue3 }, | 121 | { LLMemType::MTYPE_VERTEX_DATA, "Vertex Buffer", &LLColor4::blue3 }, |
122 | { LLMemType::MTYPE_AVATAR, "Avatar", &LLColor4::purple1 }, | 122 | { LLMemType::MTYPE_AVATAR, "Avatar", &LLColor4::purple1 }, |
123 | { LLMemType::MTYPE_REGIONS, "Regions", &LLColor4::blue1 }, | 123 | { LLMemType::MTYPE_REGIONS, "Regions", &LLColor4::blue1 }, |
124 | { LLMemType::MTYPE_VOLUME, "Volume", &LLColor4::pink1 }, | ||
125 | { LLMemType::MTYPE_PRIMITIVE, "Profile", &LLColor4::pink2 }, | ||
124 | { LLMemType::MTYPE_TEMP1, "Temp1", &LLColor4::red1 }, | 126 | { LLMemType::MTYPE_TEMP1, "Temp1", &LLColor4::red1 }, |
125 | { LLMemType::MTYPE_TEMP2, "Temp2", &LLColor4::magenta1 }, | 127 | { LLMemType::MTYPE_TEMP2, "Temp2", &LLColor4::magenta1 }, |
126 | { LLMemType::MTYPE_TEMP3, "Temp3", &LLColor4::red2 }, | 128 | { LLMemType::MTYPE_TEMP3, "Temp3", &LLColor4::red2 }, |
diff --git a/linden/indra/newview/llpanellogin.cpp b/linden/indra/newview/llpanellogin.cpp index f403271..9fcd73d 100644 --- a/linden/indra/newview/llpanellogin.cpp +++ b/linden/indra/newview/llpanellogin.cpp | |||
@@ -951,6 +951,7 @@ void LLPanelLogin::loadLoginPage() | |||
951 | { | 951 | { |
952 | LLAppViewer::instance()->resetURIs(); | 952 | LLAppViewer::instance()->resetURIs(); |
953 | gGridChoice = (EGridInfo)grid_index; | 953 | gGridChoice = (EGridInfo)grid_index; |
954 | gSavedSettings.setString("GridChoice", gGridInfo[gGridChoice].mLabel); | ||
954 | gViewerWindow->setMenuBackgroundColor(false, | 955 | gViewerWindow->setMenuBackgroundColor(false, |
955 | !LLAppViewer::instance()->isInProductionGrid()); | 956 | !LLAppViewer::instance()->isInProductionGrid()); |
956 | gLoginMenuBarView->setBackgroundColor(gMenuBarView->getBackgroundColor()); | 957 | gLoginMenuBarView->setBackgroundColor(gMenuBarView->getBackgroundColor()); |
diff --git a/linden/indra/newview/llpostprocess.cpp b/linden/indra/newview/llpostprocess.cpp index 11a211a..c72b8ae 100644 --- a/linden/indra/newview/llpostprocess.cpp +++ b/linden/indra/newview/llpostprocess.cpp | |||
@@ -215,7 +215,6 @@ void LLPostProcess::applyColorFilterShader(void) | |||
215 | { | 215 | { |
216 | gPostColorFilterProgram.bind(); | 216 | gPostColorFilterProgram.bind(); |
217 | 217 | ||
218 | glClientActiveTextureARB(GL_TEXTURE0_ARB); | ||
219 | glActiveTextureARB(GL_TEXTURE0_ARB); | 218 | glActiveTextureARB(GL_TEXTURE0_ARB); |
220 | glEnable(GL_TEXTURE_RECTANGLE_ARB); | 219 | glEnable(GL_TEXTURE_RECTANGLE_ARB); |
221 | 220 | ||
@@ -258,7 +257,6 @@ void LLPostProcess::applyNightVisionShader(void) | |||
258 | { | 257 | { |
259 | gPostNightVisionProgram.bind(); | 258 | gPostNightVisionProgram.bind(); |
260 | 259 | ||
261 | glClientActiveTextureARB(GL_TEXTURE0_ARB); | ||
262 | glActiveTextureARB(GL_TEXTURE0_ARB); | 260 | glActiveTextureARB(GL_TEXTURE0_ARB); |
263 | glEnable(GL_TEXTURE_RECTANGLE_ARB); | 261 | glEnable(GL_TEXTURE_RECTANGLE_ARB); |
264 | 262 | ||
@@ -266,7 +264,6 @@ void LLPostProcess::applyNightVisionShader(void) | |||
266 | glBindTexture(GL_TEXTURE_RECTANGLE_ARB, sceneRenderTexture); | 264 | glBindTexture(GL_TEXTURE_RECTANGLE_ARB, sceneRenderTexture); |
267 | glUniform1iARB(nightVisionUniforms["RenderTexture"], 0); | 265 | glUniform1iARB(nightVisionUniforms["RenderTexture"], 0); |
268 | 266 | ||
269 | glClientActiveTextureARB(GL_TEXTURE1_ARB); | ||
270 | glActiveTextureARB(GL_TEXTURE1_ARB); | 267 | glActiveTextureARB(GL_TEXTURE1_ARB); |
271 | glEnable(GL_TEXTURE_2D); | 268 | glEnable(GL_TEXTURE_2D); |
272 | 269 | ||
diff --git a/linden/indra/newview/llspatialpartition.cpp b/linden/indra/newview/llspatialpartition.cpp index 7d715be..c378aad 100644 --- a/linden/indra/newview/llspatialpartition.cpp +++ b/linden/indra/newview/llspatialpartition.cpp | |||
@@ -1906,9 +1906,8 @@ void pushVerts(LLDrawInfo* params, U32 mask) | |||
1906 | { | 1906 | { |
1907 | LLRenderPass::applyModelMatrix(*params); | 1907 | LLRenderPass::applyModelMatrix(*params); |
1908 | params->mVertexBuffer->setBuffer(mask); | 1908 | params->mVertexBuffer->setBuffer(mask); |
1909 | U16* indicesp = (U16*) params->mVertexBuffer->getIndicesPointer(); | 1909 | params->mVertexBuffer->drawRange(params->mParticle ? LLVertexBuffer::POINTS : LLVertexBuffer::TRIANGLES, |
1910 | glDrawRangeElements(params->mParticle ? GL_POINTS : GL_TRIANGLES, params->mStart, params->mEnd, params->mCount, | 1910 | params->mStart, params->mEnd, params->mCount, params->mOffset); |
1911 | GL_UNSIGNED_SHORT, indicesp+params->mOffset); | ||
1912 | } | 1911 | } |
1913 | 1912 | ||
1914 | void pushVerts(LLSpatialGroup* group, U32 mask) | 1913 | void pushVerts(LLSpatialGroup* group, U32 mask) |
@@ -1932,13 +1931,11 @@ void pushVerts(LLFace* face, U32 mask) | |||
1932 | if (buffer) | 1931 | if (buffer) |
1933 | { | 1932 | { |
1934 | buffer->setBuffer(mask); | 1933 | buffer->setBuffer(mask); |
1935 | U16* indicesp = (U16*) buffer->getIndicesPointer(); | ||
1936 | U16 start = face->getGeomStart(); | 1934 | U16 start = face->getGeomStart(); |
1937 | U16 end = start + face->getGeomCount()-1; | 1935 | U16 end = start + face->getGeomCount()-1; |
1938 | U32 count = face->getIndicesCount(); | 1936 | U32 count = face->getIndicesCount(); |
1939 | U16 offset = face->getIndicesStart(); | 1937 | U16 offset = face->getIndicesStart(); |
1940 | 1938 | buffer->drawRange(LLVertexBuffer::TRIANGLES, start, end, count, offset); | |
1941 | glDrawRangeElements(GL_TRIANGLES, start, end, count, GL_UNSIGNED_SHORT, indicesp + offset); | ||
1942 | } | 1939 | } |
1943 | 1940 | ||
1944 | } | 1941 | } |
@@ -1948,9 +1945,7 @@ void pushBufferVerts(LLVertexBuffer* buffer, U32 mask) | |||
1948 | if (buffer) | 1945 | if (buffer) |
1949 | { | 1946 | { |
1950 | buffer->setBuffer(mask); | 1947 | buffer->setBuffer(mask); |
1951 | U16* indicesp = (U16*) buffer->getIndicesPointer(); | 1948 | buffer->drawRange(LLVertexBuffer::TRIANGLES, 0, buffer->getRequestedVerts()-1, buffer->getRequestedIndices(), 0); |
1952 | glDrawRangeElements(GL_TRIANGLES, 0, buffer->getRequestedVerts(), buffer->getRequestedIndices(), | ||
1953 | GL_UNSIGNED_SHORT, indicesp); | ||
1954 | } | 1949 | } |
1955 | } | 1950 | } |
1956 | 1951 | ||
@@ -1999,9 +1994,8 @@ void pushVertsColorCoded(LLSpatialGroup* group, U32 mask) | |||
1999 | LLRenderPass::applyModelMatrix(*params); | 1994 | LLRenderPass::applyModelMatrix(*params); |
2000 | glColor4f(colors[col].mV[0], colors[col].mV[1], colors[col].mV[2], 0.5f); | 1995 | glColor4f(colors[col].mV[0], colors[col].mV[1], colors[col].mV[2], 0.5f); |
2001 | params->mVertexBuffer->setBuffer(mask); | 1996 | params->mVertexBuffer->setBuffer(mask); |
2002 | U16* indicesp = (U16*) params->mVertexBuffer->getIndicesPointer(); | 1997 | params->mVertexBuffer->drawRange(params->mParticle ? LLVertexBuffer::POINTS : LLVertexBuffer::TRIANGLES, |
2003 | glDrawRangeElements(params->mParticle ? GL_POINTS : GL_TRIANGLES, params->mStart, params->mEnd, params->mCount, | 1998 | params->mStart, params->mEnd, params->mCount, params->mOffset); |
2004 | GL_UNSIGNED_SHORT, indicesp+params->mOffset); | ||
2005 | col = (col+1)%col_count; | 1999 | col = (col+1)%col_count; |
2006 | } | 2000 | } |
2007 | } | 2001 | } |
@@ -2070,8 +2064,7 @@ void renderOctree(LLSpatialGroup* group) | |||
2070 | face->mVertexBuffer->setBuffer(LLVertexBuffer::MAP_VERTEX); | 2064 | face->mVertexBuffer->setBuffer(LLVertexBuffer::MAP_VERTEX); |
2071 | //drawBox((face->mExtents[0] + face->mExtents[1])*0.5f, | 2065 | //drawBox((face->mExtents[0] + face->mExtents[1])*0.5f, |
2072 | // (face->mExtents[1]-face->mExtents[0])*0.5f); | 2066 | // (face->mExtents[1]-face->mExtents[0])*0.5f); |
2073 | glDrawElements(GL_TRIANGLES, face->getIndicesCount(), GL_UNSIGNED_SHORT, | 2067 | face->mVertexBuffer->draw(LLVertexBuffer::TRIANGLES, face->getIndicesCount(), face->getIndicesStart()); |
2074 | ((U16*) face->mVertexBuffer->getIndicesPointer())+face->getIndicesStart()); | ||
2075 | } | 2068 | } |
2076 | } | 2069 | } |
2077 | 2070 | ||
diff --git a/linden/indra/newview/llviewerdisplay.cpp b/linden/indra/newview/llviewerdisplay.cpp index b4d6f27..72e3d5c 100644 --- a/linden/indra/newview/llviewerdisplay.cpp +++ b/linden/indra/newview/llviewerdisplay.cpp | |||
@@ -886,6 +886,11 @@ void render_ui_and_swap() | |||
886 | LLGLState::checkStates(); | 886 | LLGLState::checkStates(); |
887 | #endif | 887 | #endif |
888 | 888 | ||
889 | glPushMatrix(); | ||
890 | glLoadMatrixd(gGLLastModelView); | ||
891 | glh::matrix4f saved_view = glh_get_current_modelview(); | ||
892 | glh_set_current_modelview(glh_copy_matrix(gGLLastModelView)); | ||
893 | |||
889 | { | 894 | { |
890 | BOOL to_texture = gPipeline.canUseVertexShaders() && | 895 | BOOL to_texture = gPipeline.canUseVertexShaders() && |
891 | LLPipeline::sRenderGlow && | 896 | LLPipeline::sRenderGlow && |
@@ -936,6 +941,9 @@ void render_ui_and_swap() | |||
936 | 941 | ||
937 | LLVertexBuffer::stopRender(); | 942 | LLVertexBuffer::stopRender(); |
938 | } | 943 | } |
944 | |||
945 | glh_set_current_modelview(saved_view); | ||
946 | glPopMatrix(); | ||
939 | } | 947 | } |
940 | 948 | ||
941 | void render_ui_and_swap_if_needed() | 949 | void render_ui_and_swap_if_needed() |
@@ -1030,11 +1038,6 @@ void render_ui_3d() | |||
1030 | // so 3d elements requiring Z buffer are moved to LLDrawPoolHUD | 1038 | // so 3d elements requiring Z buffer are moved to LLDrawPoolHUD |
1031 | // | 1039 | // |
1032 | 1040 | ||
1033 | // Render selections | ||
1034 | //glDisableClientState(GL_COLOR_ARRAY); | ||
1035 | //glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
1036 | //glDisableClientState(GL_NORMAL_ARRAY); | ||
1037 | |||
1038 | ///////////////////////////////////////////////////////////// | 1041 | ///////////////////////////////////////////////////////////// |
1039 | // | 1042 | // |
1040 | // Render 2.5D elements (2D elements in the world) | 1043 | // Render 2.5D elements (2D elements in the world) |
diff --git a/linden/indra/newview/llviewerjointmesh.cpp b/linden/indra/newview/llviewerjointmesh.cpp index b87d564..4a0f0b8 100644 --- a/linden/indra/newview/llviewerjointmesh.cpp +++ b/linden/indra/newview/llviewerjointmesh.cpp | |||
@@ -501,21 +501,6 @@ int compare_int(const void *a, const void *b) | |||
501 | else return 0; | 501 | else return 0; |
502 | } | 502 | } |
503 | 503 | ||
504 | void llDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices) | ||
505 | { | ||
506 | if (end-start+1 > (U32) gGLManager.mGLMaxVertexRange || | ||
507 | count > gGLManager.mGLMaxIndexRange) | ||
508 | { | ||
509 | glDrawElements(mode,count,type,indices); | ||
510 | } | ||
511 | else | ||
512 | { | ||
513 | glDrawRangeElements(mode,start,end,count,type,indices); | ||
514 | } | ||
515 | |||
516 | gPipeline.addTrianglesDrawn(count/3); | ||
517 | } | ||
518 | |||
519 | //-------------------------------------------------------------------- | 504 | //-------------------------------------------------------------------- |
520 | // LLViewerJointMesh::drawShape() | 505 | // LLViewerJointMesh::drawShape() |
521 | //-------------------------------------------------------------------- | 506 | //-------------------------------------------------------------------- |
@@ -626,7 +611,7 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass) | |||
626 | U32 start = mMesh->mFaceVertexOffset; | 611 | U32 start = mMesh->mFaceVertexOffset; |
627 | U32 end = start + mMesh->mFaceVertexCount - 1; | 612 | U32 end = start + mMesh->mFaceVertexCount - 1; |
628 | U32 count = mMesh->mFaceIndexCount; | 613 | U32 count = mMesh->mFaceIndexCount; |
629 | U16* indicesp = ((U16*) mFace->mVertexBuffer->getIndicesPointer()) + mMesh->mFaceIndexOffset; | 614 | U32 offset = mMesh->mFaceIndexOffset; |
630 | 615 | ||
631 | if (mMesh->hasWeights()) | 616 | if (mMesh->hasWeights()) |
632 | { | 617 | { |
@@ -636,23 +621,21 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass) | |||
636 | { | 621 | { |
637 | uploadJointMatrices(); | 622 | uploadJointMatrices(); |
638 | } | 623 | } |
639 | llDrawRangeElements(GL_TRIANGLES, start, end, count, GL_UNSIGNED_SHORT, indicesp); | ||
640 | } | ||
641 | else | ||
642 | { | ||
643 | llDrawRangeElements(GL_TRIANGLES, start, end, count, GL_UNSIGNED_SHORT, indicesp); | ||
644 | } | 624 | } |
625 | |||
626 | mFace->mVertexBuffer->drawRange(LLVertexBuffer::TRIANGLES, start, end, count, offset); | ||
645 | } | 627 | } |
646 | else | 628 | else |
647 | { | 629 | { |
648 | glPushMatrix(); | 630 | glPushMatrix(); |
649 | LLMatrix4 jointToWorld = getWorldMatrix(); | 631 | LLMatrix4 jointToWorld = getWorldMatrix(); |
650 | glMultMatrixf((GLfloat*)jointToWorld.mMatrix); | 632 | glMultMatrixf((GLfloat*)jointToWorld.mMatrix); |
651 | llDrawRangeElements(GL_TRIANGLES, start, end, count, GL_UNSIGNED_SHORT, indicesp); | 633 | mFace->mVertexBuffer->drawRange(LLVertexBuffer::TRIANGLES, start, end, count, offset); |
652 | glPopMatrix(); | 634 | glPopMatrix(); |
653 | } | 635 | } |
636 | gPipeline.addTrianglesDrawn(count/3); | ||
654 | 637 | ||
655 | triangle_count += mMesh->mFaceIndexCount; | 638 | triangle_count += count; |
656 | 639 | ||
657 | if (mTestImageName) | 640 | if (mTestImageName) |
658 | { | 641 | { |
diff --git a/linden/indra/newview/llviewerkeyboard.cpp b/linden/indra/newview/llviewerkeyboard.cpp index 1c5d870..0d927ae 100644 --- a/linden/indra/newview/llviewerkeyboard.cpp +++ b/linden/indra/newview/llviewerkeyboard.cpp | |||
@@ -88,8 +88,6 @@ static void agent_handle_doubletap_run(EKeystate s, LLAgent::EDoubleTapRunMode m | |||
88 | { | 88 | { |
89 | if (KEYSTATE_UP == s) | 89 | if (KEYSTATE_UP == s) |
90 | { | 90 | { |
91 | // Releasing a walk-key resets the double-tap timer | ||
92 | gAgent.mDoubleTapRunTimer.reset(); | ||
93 | if (gAgent.mDoubleTapRunMode == mode && | 91 | if (gAgent.mDoubleTapRunMode == mode && |
94 | gAgent.getRunning() && | 92 | gAgent.getRunning() && |
95 | !gAgent.getAlwaysRun()) | 93 | !gAgent.getAlwaysRun()) |
@@ -98,17 +96,23 @@ static void agent_handle_doubletap_run(EKeystate s, LLAgent::EDoubleTapRunMode m | |||
98 | gAgent.clearRunning(); | 96 | gAgent.clearRunning(); |
99 | gAgent.sendWalkRun(gAgent.getRunning()); | 97 | gAgent.sendWalkRun(gAgent.getRunning()); |
100 | } | 98 | } |
101 | gAgent.mDoubleTapRunMode = mode; | ||
102 | } | 99 | } |
103 | else if (gAllowTapTapHoldRun && | 100 | else if (gAllowTapTapHoldRun && |
104 | KEYSTATE_DOWN == s && | 101 | KEYSTATE_DOWN == s && |
105 | gAgent.mDoubleTapRunMode == mode && | 102 | !gAgent.getRunning()) |
106 | gAgent.mDoubleTapRunTimer.getElapsedTimeF32() < NUDGE_TIME) | ||
107 | { | 103 | { |
108 | // Same walk-key was pushed again quickly; this is a double-tap | 104 | if (gAgent.mDoubleTapRunMode == mode && |
109 | // so engage temporary running. | 105 | gAgent.mDoubleTapRunTimer.getElapsedTimeF32() < NUDGE_TIME) |
110 | gAgent.setRunning(); | 106 | { |
111 | gAgent.sendWalkRun(gAgent.getRunning()); | 107 | // Same walk-key was pushed again quickly; this is a |
108 | // double-tap so engage temporary running. | ||
109 | gAgent.setRunning(); | ||
110 | gAgent.sendWalkRun(gAgent.getRunning()); | ||
111 | } | ||
112 | |||
113 | // Pressing any walk-key resets the double-tap timer | ||
114 | gAgent.mDoubleTapRunTimer.reset(); | ||
115 | gAgent.mDoubleTapRunMode = mode; | ||
112 | } | 116 | } |
113 | } | 117 | } |
114 | 118 | ||
diff --git a/linden/indra/newview/llvotree.cpp b/linden/indra/newview/llvotree.cpp index a55afe1..993c2a0 100644 --- a/linden/indra/newview/llvotree.cpp +++ b/linden/indra/newview/llvotree.cpp | |||
@@ -821,7 +821,7 @@ U32 LLVOTree::drawBranchPipeline(LLMatrix4& matrix, U16* indicesp, S32 trunk_LOD | |||
821 | 821 | ||
822 | glLoadMatrixf((F32*) scale_mat.mMatrix); | 822 | glLoadMatrixf((F32*) scale_mat.mMatrix); |
823 | glDrawElements(GL_TRIANGLES, sLODIndexCount[trunk_LOD], GL_UNSIGNED_SHORT, indicesp + sLODIndexOffset[trunk_LOD]); | 823 | glDrawElements(GL_TRIANGLES, sLODIndexCount[trunk_LOD], GL_UNSIGNED_SHORT, indicesp + sLODIndexOffset[trunk_LOD]); |
824 | 824 | gPipeline.addTrianglesDrawn(LEAF_INDICES/3); | |
825 | stop_glerror(); | 825 | stop_glerror(); |
826 | ret += sLODIndexCount[trunk_LOD]; | 826 | ret += sLODIndexCount[trunk_LOD]; |
827 | } | 827 | } |
@@ -871,7 +871,7 @@ U32 LLVOTree::drawBranchPipeline(LLMatrix4& matrix, U16* indicesp, S32 trunk_LOD | |||
871 | 871 | ||
872 | glLoadMatrixf((F32*) scale_mat.mMatrix); | 872 | glLoadMatrixf((F32*) scale_mat.mMatrix); |
873 | glDrawElements(GL_TRIANGLES, LEAF_INDICES, GL_UNSIGNED_SHORT, indicesp); | 873 | glDrawElements(GL_TRIANGLES, LEAF_INDICES, GL_UNSIGNED_SHORT, indicesp); |
874 | 874 | gPipeline.addTrianglesDrawn(LEAF_INDICES/3); | |
875 | stop_glerror(); | 875 | stop_glerror(); |
876 | ret += LEAF_INDICES; | 876 | ret += LEAF_INDICES; |
877 | } | 877 | } |
@@ -896,7 +896,7 @@ U32 LLVOTree::drawBranchPipeline(LLMatrix4& matrix, U16* indicesp, S32 trunk_LOD | |||
896 | 896 | ||
897 | glLoadMatrixf((F32*) scale_mat.mMatrix); | 897 | glLoadMatrixf((F32*) scale_mat.mMatrix); |
898 | glDrawElements(GL_TRIANGLES, LEAF_INDICES, GL_UNSIGNED_SHORT, indicesp); | 898 | glDrawElements(GL_TRIANGLES, LEAF_INDICES, GL_UNSIGNED_SHORT, indicesp); |
899 | 899 | gPipeline.addTrianglesDrawn(LEAF_INDICES/3); | |
900 | stop_glerror(); | 900 | stop_glerror(); |
901 | ret += LEAF_INDICES; | 901 | ret += LEAF_INDICES; |
902 | 902 | ||
diff --git a/linden/indra/newview/llvovolume.cpp b/linden/indra/newview/llvovolume.cpp index 4b357e2..188c277 100644 --- a/linden/indra/newview/llvovolume.cpp +++ b/linden/indra/newview/llvovolume.cpp | |||
@@ -762,7 +762,7 @@ void LLVOVolume::sculpt() | |||
762 | return; | 762 | return; |
763 | 763 | ||
764 | LLPointer<LLImageRaw> raw_image = new LLImageRaw(); | 764 | LLPointer<LLImageRaw> raw_image = new LLImageRaw(); |
765 | mSculptTexture->readBackRaw(discard_level, raw_image, FALSE); | 765 | BOOL is_valid = mSculptTexture->readBackRaw(discard_level, raw_image, FALSE); |
766 | 766 | ||
767 | sculpt_height = raw_image->getHeight(); | 767 | sculpt_height = raw_image->getHeight(); |
768 | sculpt_width = raw_image->getWidth(); | 768 | sculpt_width = raw_image->getWidth(); |
@@ -770,6 +770,16 @@ void LLVOVolume::sculpt() | |||
770 | sculpt_components = raw_image->getComponents(); | 770 | sculpt_components = raw_image->getComponents(); |
771 | sculpt_data = raw_image->getData(); | 771 | sculpt_data = raw_image->getData(); |
772 | 772 | ||
773 | if(is_valid) | ||
774 | { | ||
775 | is_valid = mSculptTexture->isValidForSculpt(discard_level, sculpt_width, sculpt_height, sculpt_components) ; | ||
776 | } | ||
777 | if(!is_valid) | ||
778 | { | ||
779 | sculpt_width = 0 ; | ||
780 | sculpt_height = 0 ; | ||
781 | } | ||
782 | |||
773 | llassert_always(raw_image->getDataSize() >= sculpt_height * sculpt_width * sculpt_components); | 783 | llassert_always(raw_image->getDataSize() >= sculpt_height * sculpt_width * sculpt_components); |
774 | 784 | ||
775 | getVolume()->sculpt(sculpt_width, sculpt_height, sculpt_components, sculpt_data, discard_level); | 785 | getVolume()->sculpt(sculpt_width, sculpt_height, sculpt_components, sculpt_data, discard_level); |
diff --git a/linden/indra/newview/llvowlsky.cpp b/linden/indra/newview/llvowlsky.cpp index 30d1397..159603e 100644 --- a/linden/indra/newview/llvowlsky.cpp +++ b/linden/indra/newview/llvowlsky.cpp | |||
@@ -484,17 +484,12 @@ BOOL LLVOWLSky::updateGeometry(LLDrawable * drawable) | |||
484 | 484 | ||
485 | void LLVOWLSky::drawStars(void) | 485 | void LLVOWLSky::drawStars(void) |
486 | { | 486 | { |
487 | glEnableClientState(GL_COLOR_ARRAY); | ||
488 | |||
489 | // render the stars as a sphere centered at viewer camera | 487 | // render the stars as a sphere centered at viewer camera |
490 | if (mStarsVerts.notNull()) | 488 | if (mStarsVerts.notNull()) |
491 | { | 489 | { |
492 | mStarsVerts->setBuffer(LLDrawPoolWLSky::STAR_VERTEX_DATA_MASK); | 490 | mStarsVerts->setBuffer(LLDrawPoolWLSky::STAR_VERTEX_DATA_MASK); |
493 | U16* indicesp = (U16*) mStarsVerts->getIndicesPointer(); | 491 | mStarsVerts->draw(LLVertexBuffer::POINTS, getStarsNumIndices(), 0); |
494 | glDrawElements(GL_POINTS, getStarsNumIndices(), GL_UNSIGNED_SHORT, indicesp); | ||
495 | } | 492 | } |
496 | |||
497 | glDisableClientState(GL_COLOR_ARRAY); | ||
498 | } | 493 | } |
499 | 494 | ||
500 | void LLVOWLSky::drawDome(void) | 495 | void LLVOWLSky::drawDome(void) |
@@ -507,19 +502,8 @@ void LLVOWLSky::drawDome(void) | |||
507 | LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE); | 502 | LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE); |
508 | 503 | ||
509 | const U32 data_mask = LLDrawPoolWLSky::SKY_VERTEX_DATA_MASK; | 504 | const U32 data_mask = LLDrawPoolWLSky::SKY_VERTEX_DATA_MASK; |
510 | 505 | ||
511 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
512 | |||
513 | #if DOME_SLICES | 506 | #if DOME_SLICES |
514 | //mFanVerts->setBuffer(data_mask); | ||
515 | //glDrawRangeElements( | ||
516 | // GL_TRIANGLES, | ||
517 | // 0, getFanNumVerts()-1, getFanNumIndices(), | ||
518 | // GL_UNSIGNED_SHORT, | ||
519 | // mFanVerts->getIndicesPointer()); | ||
520 | |||
521 | //gPipeline.addTrianglesDrawn(getFanNumIndices()/3); | ||
522 | |||
523 | std::vector< LLPointer<LLVertexBuffer> >::const_iterator strips_vbo_iter, end_strips; | 507 | std::vector< LLPointer<LLVertexBuffer> >::const_iterator strips_vbo_iter, end_strips; |
524 | end_strips = mStripsVerts.end(); | 508 | end_strips = mStripsVerts.end(); |
525 | for(strips_vbo_iter = mStripsVerts.begin(); strips_vbo_iter != end_strips; ++strips_vbo_iter) | 509 | for(strips_vbo_iter = mStripsVerts.begin(); strips_vbo_iter != end_strips; ++strips_vbo_iter) |
@@ -528,13 +512,10 @@ void LLVOWLSky::drawDome(void) | |||
528 | 512 | ||
529 | strips_segment->setBuffer(data_mask); | 513 | strips_segment->setBuffer(data_mask); |
530 | 514 | ||
531 | glDrawRangeElements( | 515 | strips_segment->drawRange( |
532 | //GL_TRIANGLES, | 516 | LLVertexBuffer::TRIANGLE_STRIP, |
533 | GL_TRIANGLE_STRIP, | 517 | 0, strips_segment->getRequestedVerts()-1, strips_segment->getRequestedIndices(), |
534 | 0, strips_segment->getRequestedVerts()-1, strips_segment->getRequestedIndices(), | 518 | 0); |
535 | GL_UNSIGNED_SHORT, | ||
536 | strips_segment->getIndicesPointer()); | ||
537 | |||
538 | gPipeline.addTrianglesDrawn(strips_segment->getRequestedIndices() - 2); | 519 | gPipeline.addTrianglesDrawn(strips_segment->getRequestedIndices() - 2); |
539 | } | 520 | } |
540 | 521 | ||
@@ -547,8 +528,6 @@ void LLVOWLSky::drawDome(void) | |||
547 | mStripsVerts->getIndicesPointer()); | 528 | mStripsVerts->getIndicesPointer()); |
548 | #endif | 529 | #endif |
549 | 530 | ||
550 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
551 | |||
552 | LLVertexBuffer::unbind(); | 531 | LLVertexBuffer::unbind(); |
553 | } | 532 | } |
554 | 533 | ||
diff --git a/linden/indra/newview/llwebbrowserctrl.cpp b/linden/indra/newview/llwebbrowserctrl.cpp index a9c1ec8..fbbd827 100644 --- a/linden/indra/newview/llwebbrowserctrl.cpp +++ b/linden/indra/newview/llwebbrowserctrl.cpp | |||
@@ -71,7 +71,8 @@ LLWebBrowserCtrl::LLWebBrowserCtrl( const std::string& name, const LLRect& rect | |||
71 | mIgnoreUIScale( true ), | 71 | mIgnoreUIScale( true ), |
72 | mAlwaysRefresh( false ), | 72 | mAlwaysRefresh( false ), |
73 | mExternalUrl( "" ), | 73 | mExternalUrl( "" ), |
74 | mMediaSource( 0 ) | 74 | mMediaSource( 0 ), |
75 | mTakeFocusOnClick( true ) | ||
75 | { | 76 | { |
76 | S32 screen_width = mIgnoreUIScale ? | 77 | S32 screen_width = mIgnoreUIScale ? |
77 | llround((F32)getRect().getWidth() * LLUI::sGLScaleFactor.mV[VX]) : getRect().getWidth(); | 78 | llround((F32)getRect().getWidth() * LLUI::sGLScaleFactor.mV[VX]) : getRect().getWidth(); |
@@ -161,6 +162,13 @@ void LLWebBrowserCtrl::setBorderVisible( BOOL border_visible ) | |||
161 | }; | 162 | }; |
162 | 163 | ||
163 | //////////////////////////////////////////////////////////////////////////////// | 164 | //////////////////////////////////////////////////////////////////////////////// |
165 | // | ||
166 | void LLWebBrowserCtrl::setTakeFocusOnClick( bool take_focus ) | ||
167 | { | ||
168 | mTakeFocusOnClick = take_focus; | ||
169 | } | ||
170 | |||
171 | //////////////////////////////////////////////////////////////////////////////// | ||
164 | // set flag that forces the embedded browser to open links in the external system browser | 172 | // set flag that forces the embedded browser to open links in the external system browser |
165 | void LLWebBrowserCtrl::setOpenInExternalBrowser( bool valIn ) | 173 | void LLWebBrowserCtrl::setOpenInExternalBrowser( bool valIn ) |
166 | { | 174 | { |
@@ -209,7 +217,17 @@ BOOL LLWebBrowserCtrl::handleMouseUp( S32 x, S32 y, MASK mask ) | |||
209 | convertInputCoords(x, y); | 217 | convertInputCoords(x, y); |
210 | 218 | ||
211 | if (mMediaSource) | 219 | if (mMediaSource) |
220 | { | ||
212 | mMediaSource->mouseUp(x, y); | 221 | mMediaSource->mouseUp(x, y); |
222 | |||
223 | // *HACK: LLMediaImplLLMozLib automatically takes focus on mouseup, | ||
224 | // in addition to the onFocusReceived() call below. Undo this. JC | ||
225 | if (!mTakeFocusOnClick) | ||
226 | { | ||
227 | mMediaSource->focus(false); | ||
228 | gViewerWindow->focusClient(); | ||
229 | } | ||
230 | } | ||
213 | 231 | ||
214 | gViewerWindow->setMouseCapture( NULL ); | 232 | gViewerWindow->setMouseCapture( NULL ); |
215 | 233 | ||
@@ -227,7 +245,10 @@ BOOL LLWebBrowserCtrl::handleMouseDown( S32 x, S32 y, MASK mask ) | |||
227 | 245 | ||
228 | gViewerWindow->setMouseCapture( this ); | 246 | gViewerWindow->setMouseCapture( this ); |
229 | 247 | ||
230 | setFocus( TRUE ); | 248 | if (mTakeFocusOnClick) |
249 | { | ||
250 | setFocus( TRUE ); | ||
251 | } | ||
231 | 252 | ||
232 | return TRUE; | 253 | return TRUE; |
233 | } | 254 | } |
@@ -243,7 +264,10 @@ BOOL LLWebBrowserCtrl::handleDoubleClick( S32 x, S32 y, MASK mask ) | |||
243 | 264 | ||
244 | gViewerWindow->setMouseCapture( this ); | 265 | gViewerWindow->setMouseCapture( this ); |
245 | 266 | ||
246 | setFocus( TRUE ); | 267 | if (mTakeFocusOnClick) |
268 | { | ||
269 | setFocus( TRUE ); | ||
270 | } | ||
247 | 271 | ||
248 | return TRUE; | 272 | return TRUE; |
249 | } | 273 | } |
diff --git a/linden/indra/newview/llwebbrowserctrl.h b/linden/indra/newview/llwebbrowserctrl.h index f7c9647..e1b5357 100644 --- a/linden/indra/newview/llwebbrowserctrl.h +++ b/linden/indra/newview/llwebbrowserctrl.h | |||
@@ -182,6 +182,12 @@ class LLWebBrowserCtrl : | |||
182 | 182 | ||
183 | void setBorderVisible( BOOL border_visible ); | 183 | void setBorderVisible( BOOL border_visible ); |
184 | 184 | ||
185 | // For the tutorial window, we don't want to take focus on clicks, | ||
186 | // as the examples include how to move around with the arrow | ||
187 | // keys. Thus we keep focus on the app by setting this false. | ||
188 | // Defaults to true. | ||
189 | void setTakeFocusOnClick( bool take_focus ); | ||
190 | |||
185 | static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory); | 191 | static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory); |
186 | 192 | ||
187 | // handle mouse related methods | 193 | // handle mouse related methods |
@@ -263,6 +269,7 @@ class LLWebBrowserCtrl : | |||
263 | 269 | ||
264 | private: | 270 | private: |
265 | static void onClickLinkExternalTarget( S32 option, void* userdata ); | 271 | static void onClickLinkExternalTarget( S32 option, void* userdata ); |
272 | |||
266 | LLWebBrowserCtrlEventEmitter< LLWebBrowserCtrlObserver > mEventEmitter; | 273 | LLWebBrowserCtrlEventEmitter< LLWebBrowserCtrlObserver > mEventEmitter; |
267 | const S32 mTextureDepthBytes; | 274 | const S32 mTextureDepthBytes; |
268 | int mEmbeddedBrowserWindowId; | 275 | int mEmbeddedBrowserWindowId; |
@@ -278,6 +285,7 @@ class LLWebBrowserCtrl : | |||
278 | bool mIgnoreUIScale; | 285 | bool mIgnoreUIScale; |
279 | bool mAlwaysRefresh; | 286 | bool mAlwaysRefresh; |
280 | LLMediaBase* mMediaSource; | 287 | LLMediaBase* mMediaSource; |
288 | bool mTakeFocusOnClick; | ||
281 | }; | 289 | }; |
282 | 290 | ||
283 | //////////////////////////////////////////////////////////////////////////////// | 291 | //////////////////////////////////////////////////////////////////////////////// |
diff --git a/linden/indra/newview/mozilla-theme/classic.jar b/linden/indra/newview/mozilla-theme/classic.jar index f9c03eb..0f33170 100644 --- a/linden/indra/newview/mozilla-theme/classic.jar +++ b/linden/indra/newview/mozilla-theme/classic.jar | |||
Binary files differ | |||
diff --git a/linden/indra/newview/pipeline.cpp b/linden/indra/newview/pipeline.cpp index 5f45e26..92a9811 100644 --- a/linden/indra/newview/pipeline.cpp +++ b/linden/indra/newview/pipeline.cpp | |||
@@ -168,7 +168,7 @@ glh::matrix4f glh_get_current_projection() | |||
168 | return glh_copy_matrix(gGLProjection); | 168 | return glh_copy_matrix(gGLProjection); |
169 | } | 169 | } |
170 | 170 | ||
171 | void glh_copy_matrix(glh::matrix4f& src, GLdouble* dst) | 171 | void glh_copy_matrix(const glh::matrix4f& src, GLdouble* dst) |
172 | { | 172 | { |
173 | for (U32 i = 0; i < 16; i++) | 173 | for (U32 i = 0; i < 16; i++) |
174 | { | 174 | { |
@@ -176,7 +176,7 @@ void glh_copy_matrix(glh::matrix4f& src, GLdouble* dst) | |||
176 | } | 176 | } |
177 | } | 177 | } |
178 | 178 | ||
179 | void glh_set_current_modelview(glh::matrix4f& mat) | 179 | void glh_set_current_modelview(const glh::matrix4f& mat) |
180 | { | 180 | { |
181 | glh_copy_matrix(mat, gGLModelView); | 181 | glh_copy_matrix(mat, gGLModelView); |
182 | } | 182 | } |
@@ -2144,9 +2144,9 @@ void render_hud_elements() | |||
2144 | LLViewerParcelMgr::getInstance()->renderParcelCollision(); | 2144 | LLViewerParcelMgr::getInstance()->renderParcelCollision(); |
2145 | 2145 | ||
2146 | // Render debugging beacons. | 2146 | // Render debugging beacons. |
2147 | gObjectList.renderObjectBeacons(); | 2147 | //gObjectList.renderObjectBeacons(); |
2148 | LLHUDObject::renderAll(); | 2148 | //LLHUDObject::renderAll(); |
2149 | gObjectList.resetObjectBeacons(); | 2149 | //gObjectList.resetObjectBeacons(); |
2150 | } | 2150 | } |
2151 | else if (gForceRenderLandFence) | 2151 | else if (gForceRenderLandFence) |
2152 | { | 2152 | { |
@@ -2253,11 +2253,11 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate) | |||
2253 | // | 2253 | // |
2254 | // | 2254 | // |
2255 | 2255 | ||
2256 | glEnableClientState(GL_VERTEX_ARRAY); | ||
2257 | |||
2258 | stop_glerror(); | 2256 | stop_glerror(); |
2259 | gFrameStats.start(LLFrameStats::RENDER_SYNC); | 2257 | gFrameStats.start(LLFrameStats::RENDER_SYNC); |
2260 | 2258 | ||
2259 | glEnableClientState(GL_VERTEX_ARRAY); | ||
2260 | |||
2261 | // Do verification of GL state | 2261 | // Do verification of GL state |
2262 | #ifndef LL_RELEASE_FOR_DOWNLOAD | 2262 | #ifndef LL_RELEASE_FOR_DOWNLOAD |
2263 | LLGLState::checkStates(); | 2263 | LLGLState::checkStates(); |
@@ -2377,10 +2377,10 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate) | |||
2377 | break; | 2377 | break; |
2378 | } | 2378 | } |
2379 | 2379 | ||
2380 | p->resetTrianglesDrawn(); | ||
2381 | p->render(i); | 2380 | p->render(i); |
2382 | } | 2381 | } |
2383 | poolp->endRenderPass(i); | 2382 | poolp->endRenderPass(i); |
2383 | LLVertexBuffer::unbind(); | ||
2384 | #ifndef LL_RELEASE_FOR_DOWNLOAD | 2384 | #ifndef LL_RELEASE_FOR_DOWNLOAD |
2385 | # if LL_DEBUG_GL | 2385 | # if LL_DEBUG_GL |
2386 | GLint depth; | 2386 | GLint depth; |
@@ -2413,6 +2413,7 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate) | |||
2413 | } | 2413 | } |
2414 | } | 2414 | } |
2415 | 2415 | ||
2416 | LLVertexBuffer::unbind(); | ||
2416 | #ifndef LL_RELEASE_FOR_DOWNLOAD | 2417 | #ifndef LL_RELEASE_FOR_DOWNLOAD |
2417 | LLGLState::checkStates(); | 2418 | LLGLState::checkStates(); |
2418 | LLGLState::checkTextureChannels(); | 2419 | LLGLState::checkTextureChannels(); |
@@ -2452,6 +2453,15 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate) | |||
2452 | LLVertexBuffer::stopRender(); | 2453 | LLVertexBuffer::stopRender(); |
2453 | LLVertexBuffer::unbind(); | 2454 | LLVertexBuffer::unbind(); |
2454 | 2455 | ||
2456 | if (!LLPipeline::sReflectionRender && gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI)) | ||
2457 | { | ||
2458 | gGL.start(); | ||
2459 | // Render debugging beacons. | ||
2460 | gObjectList.renderObjectBeacons(); | ||
2461 | LLHUDObject::renderAll(); | ||
2462 | gObjectList.resetObjectBeacons(); | ||
2463 | gGL.stop(); | ||
2464 | } | ||
2455 | 2465 | ||
2456 | //HACK: preserve/restore matrices around HUD render | 2466 | //HACK: preserve/restore matrices around HUD render |
2457 | if (gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_HUD)) | 2467 | if (gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_HUD)) |
@@ -2472,15 +2482,9 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate) | |||
2472 | 2482 | ||
2473 | void LLPipeline::renderGeomDeferred() | 2483 | void LLPipeline::renderGeomDeferred() |
2474 | { | 2484 | { |
2475 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
2476 | glEnableClientState(GL_NORMAL_ARRAY); | ||
2477 | glEnableClientState(GL_COLOR_ARRAY); | ||
2478 | gDeferredDiffuseProgram.bind(); | 2485 | gDeferredDiffuseProgram.bind(); |
2479 | gPipeline.renderObjects(LLRenderPass::PASS_SIMPLE, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD | LLVertexBuffer::MAP_COLOR | LLVertexBuffer::MAP_NORMAL, TRUE); | 2486 | gPipeline.renderObjects(LLRenderPass::PASS_SIMPLE, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD | LLVertexBuffer::MAP_COLOR | LLVertexBuffer::MAP_NORMAL, TRUE); |
2480 | gDeferredDiffuseProgram.unbind(); | 2487 | gDeferredDiffuseProgram.unbind(); |
2481 | glDisableClientState(GL_COLOR_ARRAY); | ||
2482 | glDisableClientState(GL_NORMAL_ARRAY); | ||
2483 | glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
2484 | } | 2488 | } |
2485 | 2489 | ||
2486 | void LLPipeline::addTrianglesDrawn(S32 count) | 2490 | void LLPipeline::addTrianglesDrawn(S32 count) |
@@ -2506,11 +2510,6 @@ void LLPipeline::renderDebug() | |||
2506 | 2510 | ||
2507 | gGL.start(); | 2511 | gGL.start(); |
2508 | 2512 | ||
2509 | // Disable all client state | ||
2510 | //glDisableClientState(GL_TEXTURE_COORD_ARRAY); | ||
2511 | //glDisableClientState(GL_NORMAL_ARRAY); | ||
2512 | //glDisableClientState(GL_COLOR_ARRAY); | ||
2513 | |||
2514 | gGLLastMatrix = NULL; | 2513 | gGLLastMatrix = NULL; |
2515 | glLoadMatrixd(gGLModelView); | 2514 | glLoadMatrixd(gGLModelView); |
2516 | glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE); | 2515 | glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE); |
@@ -2603,8 +2602,6 @@ void LLPipeline::renderForSelect(std::set<LLViewerObject*>& objects) | |||
2603 | LLGLDepthTest gls_depth(GL_TRUE,GL_TRUE); | 2602 | LLGLDepthTest gls_depth(GL_TRUE,GL_TRUE); |
2604 | disableLights(); | 2603 | disableLights(); |
2605 | 2604 | ||
2606 | glEnableClientState ( GL_VERTEX_ARRAY ); | ||
2607 | |||
2608 | //for each drawpool | 2605 | //for each drawpool |
2609 | #ifndef LL_RELEASE_FOR_DOWNLOAD | 2606 | #ifndef LL_RELEASE_FOR_DOWNLOAD |
2610 | LLGLState::checkStates(); | 2607 | LLGLState::checkStates(); |
@@ -2619,7 +2616,7 @@ void LLPipeline::renderForSelect(std::set<LLViewerObject*>& objects) | |||
2619 | { | 2616 | { |
2620 | LLFacePool* face_pool = (LLFacePool*) poolp; | 2617 | LLFacePool* face_pool = (LLFacePool*) poolp; |
2621 | face_pool->renderForSelect(); | 2618 | face_pool->renderForSelect(); |
2622 | 2619 | LLVertexBuffer::unbind(); | |
2623 | gGLLastMatrix = NULL; | 2620 | gGLLastMatrix = NULL; |
2624 | glLoadMatrixd(gGLModelView); | 2621 | glLoadMatrixd(gGLModelView); |
2625 | 2622 | ||
@@ -2635,7 +2632,6 @@ void LLPipeline::renderForSelect(std::set<LLViewerObject*>& objects) | |||
2635 | } | 2632 | } |
2636 | } | 2633 | } |
2637 | 2634 | ||
2638 | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||
2639 | LLGLEnable alpha_test(GL_ALPHA_TEST); | 2635 | LLGLEnable alpha_test(GL_ALPHA_TEST); |
2640 | if (gPickTransparent) | 2636 | if (gPickTransparent) |
2641 | { | 2637 | { |
@@ -2759,10 +2755,10 @@ void LLPipeline::renderForSelect(std::set<LLViewerObject*>& objects) | |||
2759 | } | 2755 | } |
2760 | 2756 | ||
2761 | glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); | 2757 | glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); |
2762 | glDisableClientState( GL_TEXTURE_COORD_ARRAY ); | ||
2763 | 2758 | ||
2759 | LLVertexBuffer::unbind(); | ||
2764 | LLVertexBuffer::stopRender(); | 2760 | LLVertexBuffer::stopRender(); |
2765 | 2761 | ||
2766 | glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); | 2762 | glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); |
2767 | } | 2763 | } |
2768 | 2764 | ||
@@ -4866,6 +4862,12 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in) | |||
4866 | { | 4862 | { |
4867 | if (LLPipeline::sWaterReflections && assertInitialized() && LLDrawPoolWater::sNeedsReflectionUpdate) | 4863 | if (LLPipeline::sWaterReflections && assertInitialized() && LLDrawPoolWater::sNeedsReflectionUpdate) |
4868 | { | 4864 | { |
4865 | #ifndef LL_RELEASE_FOR_DOWNLOAD | ||
4866 | LLGLState::checkStates(); | ||
4867 | LLGLState::checkTextureChannels(); | ||
4868 | LLGLState::checkClientArrays(); | ||
4869 | #endif | ||
4870 | |||
4869 | LLCamera camera = camera_in; | 4871 | LLCamera camera = camera_in; |
4870 | camera.setFar(camera.getFar()*0.87654321f); | 4872 | camera.setFar(camera.getFar()*0.87654321f); |
4871 | LLPipeline::sReflectionRender = TRUE; | 4873 | LLPipeline::sReflectionRender = TRUE; |
@@ -5052,6 +5054,12 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in) | |||
5052 | LLDrawPoolWater::sNeedsDistortionUpdate = FALSE; | 5054 | LLDrawPoolWater::sNeedsDistortionUpdate = FALSE; |
5053 | LLViewerCamera::getInstance()->setUserClipPlane(LLPlane(-pnorm, -pd)); | 5055 | LLViewerCamera::getInstance()->setUserClipPlane(LLPlane(-pnorm, -pd)); |
5054 | LLPipeline::sUseOcclusion = occlusion; | 5056 | LLPipeline::sUseOcclusion = occlusion; |
5057 | |||
5058 | #ifndef LL_RELEASE_FOR_DOWNLOAD | ||
5059 | LLGLState::checkStates(); | ||
5060 | LLGLState::checkTextureChannels(); | ||
5061 | LLGLState::checkClientArrays(); | ||
5062 | #endif | ||
5055 | } | 5063 | } |
5056 | } | 5064 | } |
5057 | 5065 | ||
diff --git a/linden/indra/newview/pipeline.h b/linden/indra/newview/pipeline.h index a2a404f..9896a4a 100644 --- a/linden/indra/newview/pipeline.h +++ b/linden/indra/newview/pipeline.h | |||
@@ -67,8 +67,9 @@ BOOL compute_min_max(LLMatrix4& box, LLVector2& min, LLVector2& max); // Shouldn | |||
67 | bool LLRayAABB(const LLVector3 ¢er, const LLVector3 &size, const LLVector3& origin, const LLVector3& dir, LLVector3 &coord, F32 epsilon = 0); | 67 | bool LLRayAABB(const LLVector3 ¢er, const LLVector3 &size, const LLVector3& origin, const LLVector3& dir, LLVector3 &coord, F32 epsilon = 0); |
68 | BOOL LLLineSegmentAABB(const LLVector3& start, const LLVector3& end, const LLVector3& center, const LLVector3& size); | 68 | BOOL LLLineSegmentAABB(const LLVector3& start, const LLVector3& end, const LLVector3& center, const LLVector3& size); |
69 | BOOL setup_hud_matrices(BOOL for_select); | 69 | BOOL setup_hud_matrices(BOOL for_select); |
70 | glh::matrix4f glh_copy_matrix(GLdouble* src); | ||
70 | glh::matrix4f glh_get_current_modelview(); | 71 | glh::matrix4f glh_get_current_modelview(); |
71 | void glh_set_current_modelview(glh::matrix4f& mat); | 72 | void glh_set_current_modelview(const glh::matrix4f& mat); |
72 | glh::matrix4f glh_get_current_projection(); | 73 | glh::matrix4f glh_get_current_projection(); |
73 | void glh_set_current_projection(glh::matrix4f& mat); | 74 | void glh_set_current_projection(glh::matrix4f& mat); |
74 | glh::matrix4f gl_ortho(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat znear, GLfloat zfar); | 75 | glh::matrix4f gl_ortho(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat znear, GLfloat zfar); |
diff --git a/linden/indra/newview/releasenotes.txt b/linden/indra/newview/releasenotes.txt index 040c1da..0243fd7 100644 --- a/linden/indra/newview/releasenotes.txt +++ b/linden/indra/newview/releasenotes.txt | |||
@@ -1,3 +1,27 @@ | |||
1 | Release Notes for Second Life 1.20(3) April 23th, 2008 | ||
2 | ===================================== | ||
3 | Fixes: | ||
4 | * Fixed: removed mac release notes dialog from LLAppviewer::init | ||
5 | * Fixed: Scrollbar channel missing in 1.20 | ||
6 | * Fixed: VWR-5080: Certain color combinations hard on visually impaired (and the not-visually-impaired) | ||
7 | * Fixed: VWR-2404: lossless texture compression on small textures not lossless | ||
8 | * Fixed: Window opens large, then small, then large on startup | ||
9 | * Fixed: Imposters sometimes render without attachments | ||
10 | * Fixed: VWR-380: Resized Flexible Prims Render Improperly | ||
11 | * Fixed: Yellow edit outline detached from selected prim | ||
12 | * Language tweaks to World Map UI | ||
13 | * Fixed: Help > Tutorial makes the world disappear | ||
14 | * Fixed: Help > Tutorial kills the keyboard. | ||
15 | * Fixed: VWR-5869: Broken BVH Animation upload causes dialog / interface error, and crash. | ||
16 | * Fixed: VWR-6275: Character runs when not supposed to. | ||
17 | * Fix for vibrating name tags. | ||
18 | * Fixed issue with mozilla scrollbars | ||
19 | * Fixed: Background and Foreground color are the same in all scroll lists | ||
20 | |||
21 | Localization Fixes: | ||
22 | * Fixed: main Toolbar will not match to its Korean localization xml | ||
23 | * Fixed: erroneous German translation for Active Speakers | ||
24 | |||
1 | Release Notes for Second Life 1.20(2) April 18th, 2008 | 25 | Release Notes for Second Life 1.20(2) April 18th, 2008 |
2 | ===================================== | 26 | ===================================== |
3 | Changes: | 27 | Changes: |
diff --git a/linden/indra/newview/skins/xui/de/floater_active_speakers.xml b/linden/indra/newview/skins/xui/de/floater_active_speakers.xml index 88c3e15..9ec58c1 100644 --- a/linden/indra/newview/skins/xui/de/floater_active_speakers.xml +++ b/linden/indra/newview/skins/xui/de/floater_active_speakers.xml | |||
@@ -1,5 +1,5 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> | 1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> |
2 | <floater name="active_speakers" title="Aktive Lautsprecher"> | 2 | <floater name="active_speakers" title="Aktive Sprecher"> |
3 | <panel name="active_speakers_panel"> | 3 | <panel name="active_speakers_panel"> |
4 | <scroll_list name="speakers_list"> | 4 | <scroll_list name="speakers_list"> |
5 | <column label="Name" name="speaker_name" /> | 5 | <column label="Name" name="speaker_name" /> |
diff --git a/linden/indra/newview/skins/xui/de/menu_viewer.xml b/linden/indra/newview/skins/xui/de/menu_viewer.xml index d72e7b7..d4a569c 100644 --- a/linden/indra/newview/skins/xui/de/menu_viewer.xml +++ b/linden/indra/newview/skins/xui/de/menu_viewer.xml | |||
@@ -77,7 +77,7 @@ | |||
77 | <menu_item_check label="Lokaler Chat" name="Chat History" /> | 77 | <menu_item_check label="Lokaler Chat" name="Chat History" /> |
78 | <menu_item_check label="Unterhalten" name="Instant Message" /> | 78 | <menu_item_check label="Unterhalten" name="Instant Message" /> |
79 | <menu_item_call label="Inventar" name="Inventory" /> | 79 | <menu_item_call label="Inventar" name="Inventory" /> |
80 | <menu_item_check label="Aktive Lautsprecher" name="Active Speakers" /> | 80 | <menu_item_check label="Aktive Sprecher" name="Active Speakers" /> |
81 | <menu_item_check label="Stummschalten-Liste" name="Mute List" /> | 81 | <menu_item_check label="Stummschalten-Liste" name="Mute List" /> |
82 | <menu_item_separator label="-----------" name="separator2" /> | 82 | <menu_item_separator label="-----------" name="separator2" /> |
83 | <menu_item_check label="Kamerasteuerung" name="Camera Controls" /> | 83 | <menu_item_check label="Kamerasteuerung" name="Camera Controls" /> |
diff --git a/linden/indra/newview/skins/xui/de/panel_preferences_general.xml b/linden/indra/newview/skins/xui/de/panel_preferences_general.xml index 635f43e..b7779b6 100644 --- a/linden/indra/newview/skins/xui/de/panel_preferences_general.xml +++ b/linden/indra/newview/skins/xui/de/panel_preferences_general.xml | |||
@@ -86,22 +86,22 @@ | |||
86 | 汉语/漢語 (Chinesisch) - Beta | 86 | 汉语/漢語 (Chinesisch) - Beta |
87 | </combo_item> | 87 | </combo_item> |
88 | <combo_item type="string" length="1" name="Deutsch(German)"> | 88 | <combo_item type="string" length="1" name="Deutsch(German)"> |
89 | Deutsch | 89 | Deutsch - Beta |
90 | </combo_item> | 90 | </combo_item> |
91 | <combo_item type="string" length="1" name="French"> | 91 | <combo_item type="string" length="1" name="French"> |
92 | Français (Französisch) | 92 | Français (Französisch) - Beta |
93 | </combo_item> | 93 | </combo_item> |
94 | <combo_item type="string" length="1" name="(Japanese)"> | 94 | <combo_item type="string" length="1" name="(Japanese)"> |
95 | 日本語 (Japanisch) | 95 | 日本語 (Japanisch) - Beta |
96 | </combo_item> | 96 | </combo_item> |
97 | <combo_item type="string" length="1" name="(Korean)"> | 97 | <combo_item type="string" length="1" name="(Korean)"> |
98 | 한국어 (Koreanisch) | 98 | 한국어 (Koreanisch) - Beta |
99 | </combo_item> | 99 | </combo_item> |
100 | <combo_item type="string" length="1" name="Portugese"> | 100 | <combo_item type="string" length="1" name="Portugese"> |
101 | Português (Portugiesisch) - Beta | 101 | Português (Portugiesisch) - Beta |
102 | </combo_item> | 102 | </combo_item> |
103 | <combo_item type="string" length="1" name="Spanish"> | 103 | <combo_item type="string" length="1" name="Spanish"> |
104 | Español (Spanisch) | 104 | Español (Spanisch) - Beta |
105 | </combo_item> | 105 | </combo_item> |
106 | </combo_box> | 106 | </combo_box> |
107 | </panel> | 107 | </panel> |
diff --git a/linden/indra/newview/skins/xui/en-us/alerts.xml b/linden/indra/newview/skins/xui/en-us/alerts.xml index d0ee7f0..b36a4ea 100644 --- a/linden/indra/newview/skins/xui/en-us/alerts.xml +++ b/linden/indra/newview/skins/xui/en-us/alerts.xml | |||
@@ -1032,6 +1032,9 @@ If you continue to have problems, please visit: http://www.secondlife.com/suppor | |||
1032 | MINSPECS | 1032 | MINSPECS |
1033 | Do you wish to visit [_URL] for more information? | 1033 | Do you wish to visit [_URL] for more information? |
1034 | </message> | 1034 | </message> |
1035 | <ignore message="ignore"> | ||
1036 | Ignore unsupported hardware | ||
1037 | </ignore> | ||
1035 | <option name="Yes"> | 1038 | <option name="Yes"> |
1036 | Yes | 1039 | Yes |
1037 | </option> | 1040 | </option> |
@@ -1067,6 +1070,20 @@ Do you wish to visit [_URL] for more information? | |||
1067 | 510 | 1070 | 510 |
1068 | </message> | 1071 | </message> |
1069 | </alert> | 1072 | </alert> |
1073 | |||
1074 | <alert modal="true" name="UnknownGPU"> | ||
1075 | <message name="message"> | ||
1076 | Your system contains a graphics card that is unknown to us at this time. | ||
1077 | This is often the case with new hardware we haven't had a chance to | ||
1078 | test. Second Life will most likely run properly, but you may need to | ||
1079 | adjust your graphics settings to something more appropriate. | ||
1080 | (Edit->Preferences->Graphics). | ||
1081 | </message> | ||
1082 | <ignore name="ignore"> | ||
1083 | Ignore unknown graphics card | ||
1084 | </ignore> | ||
1085 | </alert> | ||
1086 | |||
1070 | <alert modal="true" name="DisplaySettingsRecommended"> | 1087 | <alert modal="true" name="DisplaySettingsRecommended"> |
1071 | <message name="message"> | 1088 | <message name="message"> |
1072 | Display settings have been set to recommended levels | 1089 | Display settings have been set to recommended levels |
diff --git a/linden/indra/newview/skins/xui/en-us/floater_world_map.xml b/linden/indra/newview/skins/xui/en-us/floater_world_map.xml index b8341f2..4e26986 100644 --- a/linden/indra/newview/skins/xui/en-us/floater_world_map.xml +++ b/linden/indra/newview/skins/xui/en-us/floater_world_map.xml | |||
@@ -149,20 +149,20 @@ | |||
149 | image_name="map_track_16.tga" left="1013" mouse_opaque="true" | 149 | image_name="map_track_16.tga" left="1013" mouse_opaque="true" |
150 | name="avatar_icon" width="16" /> | 150 | name="avatar_icon" width="16" /> |
151 | <combo_box allow_text_entry="true" bottom_delta="0" follows="top|right" height="20" | 151 | <combo_box allow_text_entry="true" bottom_delta="0" follows="top|right" height="20" |
152 | label="My Friends" left_delta="20" max_chars="60" mouse_opaque="true" | 152 | label="Online Friends" left_delta="20" max_chars="60" mouse_opaque="true" |
153 | name="friend combo" tool_tip="Friend to Show on Map" width="202"> | 153 | name="friend combo" tool_tip="Friend to Show on Map" width="202"> |
154 | <combo_item name="none_selected" value="None"> | 154 | <combo_item name="none_selected" value="None"> |
155 | My Friends | 155 | Online Friends |
156 | </combo_item> | 156 | </combo_item> |
157 | </combo_box> | 157 | </combo_box> |
158 | <icon bottom_delta="-25" color="0.5, 0, 0, 1" follows="top|right" height="16" | 158 | <icon bottom_delta="-25" color="0.5, 0, 0, 1" follows="top|right" height="16" |
159 | image_name="map_track_16.tga" left="1013" mouse_opaque="true" | 159 | image_name="map_track_16.tga" left="1013" mouse_opaque="true" |
160 | name="landmark_icon" width="16" /> | 160 | name="landmark_icon" width="16" /> |
161 | <combo_box allow_text_entry="true" bottom_delta="0" follows="top|right" height="20" | 161 | <combo_box allow_text_entry="true" bottom_delta="0" follows="top|right" height="20" |
162 | label="My Landmarks" left_delta="20" max_chars="60" mouse_opaque="true" | 162 | label="Landmarks" left_delta="20" max_chars="60" mouse_opaque="true" |
163 | name="landmark combo" tool_tip="Landmark to Show on Map" width="202"> | 163 | name="landmark combo" tool_tip="Landmark to Show on Map" width="202"> |
164 | <combo_item name="none_selected" value="None"> | 164 | <combo_item name="none_selected" value="None"> |
165 | My Landmarks | 165 | Landmarks |
166 | </combo_item> | 166 | </combo_item> |
167 | </combo_box> | 167 | </combo_box> |
168 | <icon bottom_delta="-25" color="0.5, 0, 0, 1" follows="top|right" height="16" | 168 | <icon bottom_delta="-25" color="0.5, 0, 0, 1" follows="top|right" height="16" |
diff --git a/linden/indra/newview/skins/xui/es/panel_preferences_general.xml b/linden/indra/newview/skins/xui/es/panel_preferences_general.xml index 7703e0b..66fb9bd 100644 --- a/linden/indra/newview/skins/xui/es/panel_preferences_general.xml +++ b/linden/indra/newview/skins/xui/es/panel_preferences_general.xml | |||
@@ -69,16 +69,22 @@ | |||
69 | Inglés | 69 | Inglés |
70 | </combo_item> | 70 | </combo_item> |
71 | <combo_item type="string" length="1" name="Deutsch(German)"> | 71 | <combo_item type="string" length="1" name="Deutsch(German)"> |
72 | Deutsch (German) | 72 | Deutsch (Alemán) - Beta |
73 | </combo_item> | ||
74 | <combo_item type="string" length="1" name="French"> | ||
75 | Français (Francés) - Beta | ||
73 | </combo_item> | 76 | </combo_item> |
74 | <combo_item type="string" length="1" name="(Japanese)"> | 77 | <combo_item type="string" length="1" name="(Japanese)"> |
75 | 日本語 (Japanese) | 78 | 日本語 (Japonés) - Beta |
76 | </combo_item> | 79 | </combo_item> |
77 | <combo_item type="string" length="1" name="(Korean)"> | 80 | <combo_item type="string" length="1" name="(Korean)"> |
78 | 한국어 (Korean) | 81 | 한국어 (Coreano) - Beta |
79 | </combo_item> | 82 | </combo_item> |
80 | <combo_item type="string" length="1" name="Chinese"> | 83 | <combo_item type="string" length="1" name="Chinese"> |
81 | Chino | 84 | 汉语/漢語 (Chino) - Beta |
85 | </combo_item> | ||
86 | <combo_item type="string" name="Spanish"> | ||
87 | Español - Beta | ||
82 | </combo_item> | 88 | </combo_item> |
83 | </combo_box> | 89 | </combo_box> |
84 | </panel> | 90 | </panel> |
diff --git a/linden/indra/newview/skins/xui/fr/panel_preferences_general.xml b/linden/indra/newview/skins/xui/fr/panel_preferences_general.xml index c17fd3b..acf89cd 100644 --- a/linden/indra/newview/skins/xui/fr/panel_preferences_general.xml +++ b/linden/indra/newview/skins/xui/fr/panel_preferences_general.xml | |||
@@ -70,16 +70,16 @@ | |||
70 | Anglais | 70 | Anglais |
71 | </combo_item> | 71 | </combo_item> |
72 | <combo_item type="string" length="1" name="Deutsch(German)"> | 72 | <combo_item type="string" length="1" name="Deutsch(German)"> |
73 | Deutsch (German) | 73 | Deutsch (German) - Beta |
74 | </combo_item> | 74 | </combo_item> |
75 | <combo_item type="string" length="1" name="(Japanese)"> | 75 | <combo_item type="string" length="1" name="(Japanese)"> |
76 | 日本語 (Japanese) | 76 | 日本語 (Japanese) - Beta |
77 | </combo_item> | 77 | </combo_item> |
78 | <combo_item type="string" length="1" name="(Korean)"> | 78 | <combo_item type="string" length="1" name="(Korean)"> |
79 | 한국어 (Korean) | 79 | 한국어 (Korean) - Beta |
80 | </combo_item> | 80 | </combo_item> |
81 | <combo_item type="string" length="1" name="Chinese"> | 81 | <combo_item type="string" length="1" name="Chinese"> |
82 | Chinois | 82 | Chinois - Beta |
83 | </combo_item> | 83 | </combo_item> |
84 | </combo_box> | 84 | </combo_box> |
85 | </panel> | 85 | </panel> |
diff --git a/linden/indra/newview/skins/xui/ja/panel_preferences_general.xml b/linden/indra/newview/skins/xui/ja/panel_preferences_general.xml index e5deeb3..5017f37 100644 --- a/linden/indra/newview/skins/xui/ja/panel_preferences_general.xml +++ b/linden/indra/newview/skins/xui/ja/panel_preferences_general.xml | |||
@@ -92,22 +92,22 @@ | |||
92 | 汉语/漢語(中国語) – ベータ | 92 | 汉语/漢語(中国語) – ベータ |
93 | </combo_item> | 93 | </combo_item> |
94 | <combo_item type="string" length="1" name="Deutsch(German)"> | 94 | <combo_item type="string" length="1" name="Deutsch(German)"> |
95 | Deutsch (ドイツ語) | 95 | Deutsch (ドイツ語) – ベータ |
96 | </combo_item> | 96 | </combo_item> |
97 | <combo_item type="string" length="1" name="French"> | 97 | <combo_item type="string" length="1" name="French"> |
98 | Français (フランス語) | 98 | Français (フランス語) – ベータ |
99 | </combo_item> | 99 | </combo_item> |
100 | <combo_item type="string" length="1" name="(Japanese)"> | 100 | <combo_item type="string" length="1" name="(Japanese)"> |
101 | 日本語 | 101 | 日本語 – ベータ |
102 | </combo_item> | 102 | </combo_item> |
103 | <combo_item type="string" length="1" name="(Korean)"> | 103 | <combo_item type="string" length="1" name="(Korean)"> |
104 | 한국어 (韓国語) | 104 | 한국어 (韓国語) – ベータ |
105 | </combo_item> | 105 | </combo_item> |
106 | <combo_item type="string" length="1" name="Portugese"> | 106 | <combo_item type="string" length="1" name="Portugese"> |
107 | Português (ポルトガル語) – ベータ | 107 | Português (ポルトガル語) – ベータ |
108 | </combo_item> | 108 | </combo_item> |
109 | <combo_item type="string" length="1" name="Spanish"> | 109 | <combo_item type="string" length="1" name="Spanish"> |
110 | Español (スペイン語) | 110 | Español (スペイン語) – ベータ |
111 | </combo_item> | 111 | </combo_item> |
112 | </combo_box> | 112 | </combo_box> |
113 | </panel> | 113 | </panel> |
diff --git a/linden/indra/newview/skins/xui/ko/panel_preferences_general.xml b/linden/indra/newview/skins/xui/ko/panel_preferences_general.xml index 15e1e31..9c02484 100644 --- a/linden/indra/newview/skins/xui/ko/panel_preferences_general.xml +++ b/linden/indra/newview/skins/xui/ko/panel_preferences_general.xml | |||
@@ -87,22 +87,22 @@ | |||
87 | 汉语/漢語(중국어) - 베타 | 87 | 汉语/漢語(중국어) - 베타 |
88 | </combo_item> | 88 | </combo_item> |
89 | <combo_item type="string" length="1" name="Deutsch(German)"> | 89 | <combo_item type="string" length="1" name="Deutsch(German)"> |
90 | Deutsch (독일어) | 90 | Deutsch (독일어) - 베타 |
91 | </combo_item> | 91 | </combo_item> |
92 | <combo_item type="string" length="1" name="French"> | 92 | <combo_item type="string" length="1" name="French"> |
93 | Français (불어) | 93 | Français (불어) - 베타 |
94 | </combo_item> | 94 | </combo_item> |
95 | <combo_item type="string" length="1" name="(Japanese)"> | 95 | <combo_item type="string" length="1" name="(Japanese)"> |
96 | 日本語 (일본어) | 96 | 日本語 (일본어) - 베타 |
97 | </combo_item> | 97 | </combo_item> |
98 | <combo_item type="string" length="1" name="(Korean)"> | 98 | <combo_item type="string" length="1" name="(Korean)"> |
99 | 한국어 | 99 | 한국어 - 베타 |
100 | </combo_item> | 100 | </combo_item> |
101 | <combo_item type="string" length="1" name="Portugese"> | 101 | <combo_item type="string" length="1" name="Portugese"> |
102 | Português(포르투갈어) - 베타 | 102 | Português(포르투갈어) - 베타 |
103 | </combo_item> | 103 | </combo_item> |
104 | <combo_item type="string" length="1" name="Spanish"> | 104 | <combo_item type="string" length="1" name="Spanish"> |
105 | Español (스페인어) | 105 | Español (스페인어) - 베타 |
106 | </combo_item> | 106 | </combo_item> |
107 | </combo_box> | 107 | </combo_box> |
108 | </panel> | 108 | </panel> |
diff --git a/linden/indra/newview/skins/xui/ko/panel_toolbar.xml b/linden/indra/newview/skins/xui/ko/panel_toolbar.xml index 1a61390..1c92f88 100644 --- a/linden/indra/newview/skins/xui/ko/panel_toolbar.xml +++ b/linden/indra/newview/skins/xui/ko/panel_toolbar.xml | |||
@@ -1,9 +1,7 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> | 1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> |
2 | <panel name="toolbar"> | 2 | <panel name="toolbar"> |
3 | <button label="메신저" name="im_btn" tool_tip="친구들과 메신저 하기." /> | 3 | <string name="Redock Windows">창 합치기</string> |
4 | <string name="Redock Windows"> | 4 | <layout_stack name="toolbar_stack"> |
5 | 창 합치기 | ||
6 | </string> | ||
7 | <button label="통신" name="communicate_btn" | 5 | <button label="통신" name="communicate_btn" |
8 | tool_tip="친구 및 그룹과 통신합니다." /> | 6 | tool_tip="친구 및 그룹과 통신합니다." /> |
9 | <button label="" name="chat_btn" tool_tip="채팅 표시줄 표시 (입력)" /> | 7 | <button label="" name="chat_btn" tool_tip="채팅 표시줄 표시 (입력)" /> |
@@ -20,4 +18,5 @@ | |||
20 | tool_tip="내 주변 영역의 지도 (Ctrl-Shift-M)" /> | 18 | tool_tip="내 주변 영역의 지도 (Ctrl-Shift-M)" /> |
21 | <button label="지도" name="map_btn" tool_tip="월드 지도 (Ctrl-M)" /> | 19 | <button label="지도" name="map_btn" tool_tip="월드 지도 (Ctrl-M)" /> |
22 | <button label="인벤토리" name="inventory_btn" tool_tip="아이템. (Ctrl-I)" /> | 20 | <button label="인벤토리" name="inventory_btn" tool_tip="아이템. (Ctrl-I)" /> |
21 | </layout_stack> | ||
23 | </panel> | 22 | </panel> |
diff --git a/linden/indra/newview/skins/xui/zh/panel_preferences_general.xml b/linden/indra/newview/skins/xui/zh/panel_preferences_general.xml index 3eccaab..77460f2 100644 --- a/linden/indra/newview/skins/xui/zh/panel_preferences_general.xml +++ b/linden/indra/newview/skins/xui/zh/panel_preferences_general.xml | |||
@@ -68,16 +68,16 @@ | |||
68 | 英语 | 68 | 英语 |
69 | </combo_item> | 69 | </combo_item> |
70 | <combo_item type="string" length="1" name="Deutsch(German)"> | 70 | <combo_item type="string" length="1" name="Deutsch(German)"> |
71 | Deutsch (German) | 71 | Deutsch (German) - Beta |
72 | </combo_item> | 72 | </combo_item> |
73 | <combo_item type="string" length="1" name="(Japanese)"> | 73 | <combo_item type="string" length="1" name="(Japanese)"> |
74 | 日本語 (Japanese) | 74 | 日本語 (Japanese) - Beta |
75 | </combo_item> | 75 | </combo_item> |
76 | <combo_item type="string" length="1" name="(Korean)"> | 76 | <combo_item type="string" length="1" name="(Korean)"> |
77 | 한국어 (Korean) | 77 | 한국어 (Korean) - Beta |
78 | </combo_item> | 78 | </combo_item> |
79 | <combo_item type="string" length="1" name="Chinese"> | 79 | <combo_item type="string" length="1" name="Chinese"> |
80 | 中文 | 80 | 中文 - Beta |
81 | </combo_item> | 81 | </combo_item> |
82 | </combo_box> | 82 | </combo_box> |
83 | </panel> | 83 | </panel> |