Support for PVRTC?
Monkey Targets Forums/iOS/Support for PVRTC?
| ||
| Hi Is it possible to use PVRTC textures in Monkey on iOS? I read that they sasve memory and gain performance, and because we're using few fullscreen 1024x768 backgrounds it could be worth to use that format. Any experience? cheers Roman |
| ||
| very propably this is possible, but i guess this isn't really important for many people as other features are much more needed. And i guess this isn't just a quick addition You could try to write it yourself to learn from if you have time. Here is an example for loading dds (you have to wrap SOIL as your needs)
//Native Code
//http://www.lonesock.net/soil.html
void PlotDDSFile(char* _pcFileName)
{
int iWidth = 0;
int iHeight = 0;
int iChannels = 0;
int iR = 0;
int iG = 0;
int iB = 0;
unsigned char* pucImage = SOIL_load_image(_pcFileName, &iHeight, &iWidth,
&iChannels, SOIL_LOAD_AUTO);
if (pucImage == NULL) { return; }
char acBuffer[200];
for (int y = 0; y < iHeight; ++y)
{
for (int x = 0; x < iWidth; ++x)
{
iR = pucImage[(y * iWidth * iChannels) + (x * iChannels)];
iG = pucImage[(y * iWidth * iChannels) + (x * iChannels) + 1];
iB = pucImage[(y * iWidth * iChannels) + (x * iChannels) + 2];
SetColor((float)iR/255, (float)iG/255, (float)iB/255, 1.0f);
WritePixel(x, y);
}
}
SetColor(1.0f, 1.0f, 1.0f, 1.0f);
}
You have to write a WritePixel/SetPixel Function Here is a example by a german member of the site monkeycoder.de called Suco-X Hopefully he don't smash my head to much for spreading his code ^^
Class CPixmap
Field _canvas:HTMLCanvasElement
Field _rc:CanvasRenderingContext2D
Field _pixel:ImageData
Method New(canvas:HTMLCanvasElement)
_canvas = canvas
_rc = CanvasRenderingContext2D(canvas.getContext("2d"))
End
Method Width:Float()
If Not _pixel Return
Return _pixel.width
End
Method Height:Float()
If Not _pixel Return
Return _pixel.height
End
Method GetPixel:Int[](x:Int, y:Int)
Local index:Int, color:Int[4]
If Not _pixel Return
x = Min(x, _pixel.width)
y = Min(y, _pixel.height)
index = (y*4)*Width+(x*4)
color[0] = _pixel.data[index]
color[1] = _pixel.data[index+1]
color[2] = _pixel.data[index+2]
color[3] = _pixel.data[index+3]
Return color
End
Method SetPixel(x:Int, y:Int, r:Int, g:Int, b:Int, a:Int)
Local index:Int
If Not _pixel Return
index = (y*4)*Width+(x*4)
_pixel.data[index] = r
_pixel.data[index+1] = g
_pixel.data[index+2] = b
_pixel.data[index+3] = a
End
Method Create(w:Int, h:Int)
If Not _rc Return
_pixel = _rc.createImageData(w,h)
End
Method Grab(x:Int, y:Int, w:Int, h:Int)
If Not _rc
Print "Rendering Context doesn`s exists"
Return
End
_pixel = _rc.getImageData(x,y,w,h)
End
Method Draw(x:Float, y:Float)
If Not _pixel Return
_rc.putImageData(_pixel,x,y)
End
End
|