Wowpedia

We have moved to Warcraft Wiki. Click here for information and the new URL.

READ MORE

Wowpedia
(link to forum post confirming change, along with suggested work-around)
Xporcbot (talk | contribs)
m (clean up, replaced: {{removed → {{Removed, [[Image: → [[File: (4))
Tag: WoW API docs
 
(5 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{widgetmethod}} {{removedapi|3.3.3}}
+
{{widgetmethod}} {{Removedapi|3.3.3|See [[#Patch changes]] below for work-around}}
   
 
Set whether subsequent [[API Texture SetTexCoord|SetTexCoord()]] operations also modify the rendering rectangle of a Texture object to maintain texture scaling when the texture coordinates are modified. This adjustment is only implemented for rectangular regions and may yield undesirable results for rotation or shearing transformations.
 
Set whether subsequent [[API Texture SetTexCoord|SetTexCoord()]] operations also modify the rendering rectangle of a Texture object to maintain texture scaling when the texture coordinates are modified. This adjustment is only implemented for rectangular regions and may yield undesirable results for rotation or shearing transformations.
Line 5: Line 5:
 
MyTexture:SetTexCoordModifiesRect(enableFlag)
 
MyTexture:SetTexCoordModifiesRect(enableFlag)
   
== Parameters ==
+
==Parameters==
 
:;enableFlag: Boolean:
 
:;enableFlag: Boolean:
 
:::'''false''' (default) to stretch/shrink the texture on SetTexCoord calls.
 
:::'''false''' (default) to stretch/shrink the texture on SetTexCoord calls.
 
:::'''true''' to modify the display rectangle's dimensions instead.
 
:::'''true''' to modify the display rectangle's dimensions instead.
   
== Details ==
+
==Details==
 
By default a Texture object renders the underlying texture image across the entire surface of the Texture region, so setting TexCoords that represent a subset of the underlying image results in a scaled or stretched result. If SetTexCoordModifiesRect is set to true, then the rendering rectangle is adjusted relative to the Texture region, so that sizing/scaling will be preserved relative to the original (0,1,0,1) coordinates. The new rendering area has the same BOTTOMLEFT corner as the Texture region, but then a width and height defined as follows:
 
By default a Texture object renders the underlying texture image across the entire surface of the Texture region, so setting TexCoords that represent a subset of the underlying image results in a scaled or stretched result. If SetTexCoordModifiesRect is set to true, then the rendering rectangle is adjusted relative to the Texture region, so that sizing/scaling will be preserved relative to the original (0,1,0,1) coordinates. The new rendering area has the same BOTTOMLEFT corner as the Texture region, but then a width and height defined as follows:
   
Line 19: Line 19:
 
The texture image is then rendered onto a screen region with the same BOTTOMLEFT corner as T, but with a width of W * (abs(x2-x1)) and height of H * (abs(y2-y1))
 
The texture image is then rendered onto a screen region with the same BOTTOMLEFT corner as T, but with a width of W * (abs(x2-x1)) and height of H * (abs(y2-y1))
   
== Examples ==
+
==Examples==
 
 
 
 
<div style="max-width: 60em; margin-left: 3%">
 
<div style="max-width: 60em; margin-left: 3%">
 
{| cellpadding=10 style="background: transparent;"
 
{| cellpadding=10 style="background: transparent;"
Line 32: Line 29:
   
 
... and watch what happens below:
 
... and watch what happens below:
|[[Image:SetTexCoordModifiesRect-1.jpg]]
+
|[[File:SetTexCoordModifiesRect-1.jpg]]
 
|- valign=top
 
|- valign=top
 
|
 
|
Line 38: Line 35:
   
 
Rather than stretching over the 150x150 rectangle, the display rectangle becomes smaller.
 
Rather than stretching over the 150x150 rectangle, the display rectangle becomes smaller.
|[[Image:SetTexCoordModifiesRect-2.jpg]]
+
|[[File:SetTexCoordModifiesRect-2.jpg]]
 
|- valign=top
 
|- valign=top
 
|
 
|
Line 44: Line 41:
   
 
Setting coordinates outside 0--1 produces interesting results...
 
Setting coordinates outside 0--1 produces interesting results...
|[[Image:SetTexCoordModifiesRect-3.jpg]]
+
|[[File:SetTexCoordModifiesRect-3.jpg]]
 
|- valign=top
 
|- valign=top
 
|
 
|
Line 53: Line 50:
   
 
You have to ''first'' change the texcoords to 0,1,0,1 to restore the rectangle, ''then'' you can turn ModifiesRect off.
 
You have to ''first'' change the texcoords to 0,1,0,1 to restore the rectangle, ''then'' you can turn ModifiesRect off.
|[[Image:SetTexCoordModifiesRect-4.jpg]]
+
|[[File:SetTexCoordModifiesRect-4.jpg]]
 
|}
 
|}
 
</div>
 
</div>
   
== Notes ==
+
==Patch changes==
This API has been deprecated in 3.3.3 in favor of modified implementation to be made available in a future release. {{ref web |url=http://forums.worldofwarcraft.com/thread.html?topicId=20437376853&sid=1&pageNo=5#86 | title=Reason, and workaround }}<br/>
+
*{{Patch 3.3.3|note=Removed. {{ref web |url=http://forums.worldofwarcraft.com/thread.html?topicId=20437376853&sid=1&pageNo=5#86 | title=Reason, and workaround }}}}
  +
*{{Patch 1.11.0|note=Added.}}

Latest revision as of 18:14, 4 April 2020

Set whether subsequent SetTexCoord() operations also modify the rendering rectangle of a Texture object to maintain texture scaling when the texture coordinates are modified. This adjustment is only implemented for rectangular regions and may yield undesirable results for rotation or shearing transformations.

MyTexture:SetTexCoordModifiesRect(enableFlag)

Parameters

enableFlag
Boolean:
false (default) to stretch/shrink the texture on SetTexCoord calls.
true to modify the display rectangle's dimensions instead.

Details

By default a Texture object renders the underlying texture image across the entire surface of the Texture region, so setting TexCoords that represent a subset of the underlying image results in a scaled or stretched result. If SetTexCoordModifiesRect is set to true, then the rendering rectangle is adjusted relative to the Texture region, so that sizing/scaling will be preserved relative to the original (0,1,0,1) coordinates. The new rendering area has the same BOTTOMLEFT corner as the Texture region, but then a width and height defined as follows:

T is a texture with a display width of W and display height of H. T:SetTexCoordModifiesRect(true) is called T:SetTexCoord(x1,x2, y1,y2) is then executed

The texture image is then rendered onto a screen region with the same BOTTOMLEFT corner as T, but with a width of W * (abs(x2-x1)) and height of H * (abs(y2-y1))

Examples

We start out with a plain 150x150 texture drawn on top of a light blue 150x150 plate.

And then we do:

MyTexture:SetTexCoordModifiesRect(enableFlag)

... and watch what happens below:

SetTexCoordModifiesRect-1
SetTexCoord( 0, 0.5  ,  0, 0.8 );

Rather than stretching over the 150x150 rectangle, the display rectangle becomes smaller.

SetTexCoordModifiesRect-2
SetTexCoord( -0.3, 1  ,  0, 0.8 );

Setting coordinates outside 0--1 produces interesting results...

SetTexCoordModifiesRect-3
SetTexCoordModifiesRect(false)
SetTexCoord( 0, 1  ,  0, 1 );

Note how unsetting ModifiesRect does not automatically return the display rectangle to its normal state.

You have to first change the texcoords to 0,1,0,1 to restore the rectangle, then you can turn ModifiesRect off.

SetTexCoordModifiesRect-4

Patch changes