• Create Account

## DX11 - Cube Texture Creation

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

10 replies to this topic

### #1Migi0027 (肉コーダ)  Members

4381
Like
0Likes
Like

Posted 29 August 2013 - 02:44 PM

Hi guys!

So recently I needed a cube map, and I've never actually used one, so, this is my first try. But something goes wrong, some invalid parameters were passed, this is how I create the cube map:

PS. The other functions are from the library devIL (http://openil.sourceforge.net/)

// Will be filled and returned

ilInit();

ILuint idImage;
ilGenImages( 1, &idImage );
ilBindImage( idImage );
_ASSERT ( IL_NO_ERROR == ilGetError() );

// Fetch dimensions of image
int width = ilGetInteger( IL_IMAGE_WIDTH );
int height = ilGetInteger( IL_IMAGE_HEIGHT );

ilConvertImage( IL_RGBA,IL_UNSIGNED_BYTE );
unsigned char * pData = ilGetData();

// Build the texture header descriptor
D3D11_TEXTURE2D_DESC descTex;
descTex.Width = width;
descTex.Height = height;
descTex.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
descTex.Usage = D3D11_USAGE_DEFAULT;
descTex.CPUAccessFlags = 0;
descTex.MipLevels = 1;
descTex.ArraySize = 1;
descTex.SampleDesc.Count = 1;
descTex.SampleDesc.Quality = 0;
descTex.MiscFlags = D3D10_RESOURCE_MISC_GENERATE_MIPS;

// Resource data descriptor
D3D11_SUBRESOURCE_DATA data ;
memset( &data, 0, sizeof(D3D11_SUBRESOURCE_DATA));
data.pSysMem = pData;
data.SysMemPitch = 4 * width;

// Create the 2d texture from data
ID3D11Texture2D * pTexture = NULL;
HV( pDevice->CreateTexture2D( &descTex, &data, &pTexture ));

// Create resource view descriptor
srvDesc.Format = descTex.Format;
srvDesc.ViewDimension = dimension;

srvDesc.TextureCube.MostDetailedMip = 0;
srvDesc.TextureCube.MipLevels = D3D11_RESOURCE_MISC_GENERATE_MIPS;

srvDesc.Texture2D.MostDetailedMip = 0;
srvDesc.Texture2D.MipLevels = D3D11_RESOURCE_MISC_GENERATE_MIPS ;

// Create the shader resource view
HV( pDevice->CreateShaderResourceView( pTexture, &srvDesc, &pSRV ));

// Delete from IL buffer after image loaded correctly
ilDeleteImages( 1, &idImage );
idImage = 0;

return pSRV;


Where dimension is D3D11_SRV_DIMENSION_TEXTURECUBE, now what could I be doing wrong? (...Everything)

PS. I won't respond in the next 12-24 hours.

Thank You

-MIGI0027

FastCall22: "I want to make the distinction that my laptop is a whore-box that connects to different network"

Blog about... stuff (GDNet, WordPress): www.gamedev.net/blog/1882-the-cuboid-zone/cuboidzone.wordpress.com/

### #2Juliean  GDNet+

6171
Like
0Likes
Like

Posted 29 August 2013 - 02:55 PM

ArraySize

Type: UINT

Number of textures in the texture array. The range is from 1 to D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION (2048). For a texture cube-map, this value is a multiple of 6 (that is, 6 times the value in the NumCubes member of D3D11_TEXCUBE_ARRAY_SRV), and the range is from 6 to 2046. The range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.

I suppose this ought to be the issue, at least part of it. If you read what comes before the invalid_arguments line, it should tell you exactly whats wrong, if you enabled the debug device...

Edited by Juliean, 29 August 2013 - 02:55 PM.

### #3Migi0027 (肉コーダ)  Members

4381
Like
0Likes
Like

Posted 29 August 2013 - 11:05 PM

Hmm:

D3D11: ERROR: ID3D11Device::CreateShaderResourceView: Resources created without D3D11_RESOURCE_MISC_TEXTURECUBE may not be treated as cubemap ShaderResourceViews. [ STATE_CREATION ERROR #126: CREATESHADERRESOURCEVIEW_INVALIDDESC ]

FastCall22: "I want to make the distinction that my laptop is a whore-box that connects to different network"

Blog about... stuff (GDNet, WordPress): www.gamedev.net/blog/1882-the-cuboid-zone/cuboidzone.wordpress.com/

### #4Juliean  GDNet+

6171
Like
0Likes
Like

Posted 30 August 2013 - 07:08 AM

Why, as it says:

descTex.MiscFlags = D3D10_RESOURCE_MISC_GENERATE_MIPS | D3D11_RESOURCE_MISC_TEXTURECUBE;


Any other error?

### #5Migi0027 (肉コーダ)  Members

4381
Like
0Likes
Like

Posted 30 August 2013 - 11:17 AM

It's almost perfect now, thanks for the help Juliean, the final code was nothing near the initial.

One final question:

Imagine I have these .bmp files:

• back
• down
• front
• left
• right
• up

If I had to combine these into an array (Cubemap) (Which I'm doing), what would be the correct order? (My order is wrong)

FastCall22: "I want to make the distinction that my laptop is a whore-box that connects to different network"

Blog about... stuff (GDNet, WordPress): www.gamedev.net/blog/1882-the-cuboid-zone/cuboidzone.wordpress.com/

### #6Juliean  GDNet+

6171
Like
1Likes
Like

Posted 30 August 2013 - 11:34 AM

If I had to combine these into an array (Cubemap) (Which I'm doing), what would be the correct order? (My order is wrong)

Sorry, I haven't worked that much with cube textures myself, so I'll have to pass. Glad to see it now works though, maybe someone else can answer that question for you.

### #7MJP  Moderators

18192
Like
0Likes
Like

Posted 30 August 2013 - 12:04 PM

The order is in the docs. Go to the D3D10 overview, go to resources, and open the page for resource types. Scroll down to the section on cubemaps. I'm pretty sure the order is +x, -x, +y, -y, +z, -z.

I'd check myself and provide a link, but I'm on my phone at the moment.

### #8MJP  Moderators

18192
Like
0Likes
Like

Posted 30 August 2013 - 12:07 PM

Also I'm pretty sure that the Texassemble utility from DirectXTK can create a cubemap DDS from 6 separate images.

### #9Migi0027 (肉コーダ)  Members

4381
Like
0Likes
Like

Posted 30 August 2013 - 04:19 PM

Almost perfect, if someone could guide me on this:

PS. The shadows are from another mesh inside the sphere, which casts shadows, but the sphere doesn't.

As you can see It's like the cube map is upside down...

FastCall22: "I want to make the distinction that my laptop is a whore-box that connects to different network"

Blog about... stuff (GDNet, WordPress): www.gamedev.net/blog/1882-the-cuboid-zone/cuboidzone.wordpress.com/

### #10Juliean  GDNet+

6171
Like
0Likes
Like

Posted 30 August 2013 - 06:59 PM

As you can see It's like the cube map is upside down...

How about flipping them around? +x gets -x, and vice versa? I mean, even brute force there is only 64 possible combinations, I quess that would be faster solved that way before someone could answer you here ;)

### #11Migi0027 (肉コーダ)  Members

4381
Like
0Likes
Like

Posted 31 August 2013 - 01:35 AM

Somehow the order didn't matter in the up side down issue, but thanks!

I fixed it by reversing the .y component in the texture coordinates used to sample the map.

-MIGI0027

FastCall22: "I want to make the distinction that my laptop is a whore-box that connects to different network"

Blog about... stuff (GDNet, WordPress): www.gamedev.net/blog/1882-the-cuboid-zone/cuboidzone.wordpress.com/

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.