Add basic mip writing to gpu::Texture

This commit is contained in:
Ryan Huffman 2017-04-10 07:12:49 -07:00 committed by Atlante45
parent 00cbfa0f70
commit 1fec531c68
5 changed files with 13 additions and 4 deletions

View file

@ -626,7 +626,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo
proxy.setType(QNetworkProxy::HttpProxy); proxy.setType(QNetworkProxy::HttpProxy);
proxy.setHostName("127.0.0.1"); proxy.setHostName("127.0.0.1");
proxy.setPort(8888); proxy.setPort(8888);
QNetworkProxy::setApplicationProxy(proxy); //QNetworkProxy::setApplicationProxy(proxy);
// make sure the debug draw singleton is initialized on the main thread. // make sure the debug draw singleton is initialized on the main thread.
DebugDraw::getInstance().removeMarker(""); DebugDraw::getInstance().removeMarker("");

View file

@ -270,6 +270,7 @@ public:
virtual void reset() = 0; virtual void reset() = 0;
virtual PixelsPointer getMipFace(uint16 level, uint8 face = 0) const = 0; virtual PixelsPointer getMipFace(uint16 level, uint8 face = 0) const = 0;
virtual Size getMipFaceSize(uint16 level, uint8 face = 0) const = 0; virtual Size getMipFaceSize(uint16 level, uint8 face = 0) const = 0;
virtual void assignMipData(uint16 level, const char* data, const size_t length) = 0;
virtual void assignMipData(uint16 level, const storage::StoragePointer& storage) = 0; virtual void assignMipData(uint16 level, const storage::StoragePointer& storage) = 0;
virtual void assignMipFaceData(uint16 level, uint8 face, const storage::StoragePointer& storage) = 0; virtual void assignMipFaceData(uint16 level, uint8 face, const storage::StoragePointer& storage) = 0;
virtual bool isMipAvailable(uint16 level, uint8 face = 0) const = 0; virtual bool isMipAvailable(uint16 level, uint8 face = 0) const = 0;
@ -296,6 +297,7 @@ public:
void reset() override; void reset() override;
PixelsPointer getMipFace(uint16 level, uint8 face = 0) const override; PixelsPointer getMipFace(uint16 level, uint8 face = 0) const override;
Size getMipFaceSize(uint16 level, uint8 face = 0) const override; Size getMipFaceSize(uint16 level, uint8 face = 0) const override;
void assignMipData(uint16 level, const char* data, const size_t length) override;
void assignMipData(uint16 level, const storage::StoragePointer& storage) override; void assignMipData(uint16 level, const storage::StoragePointer& storage) override;
void assignMipFaceData(uint16 level, uint8 face, const storage::StoragePointer& storage) override; void assignMipFaceData(uint16 level, uint8 face, const storage::StoragePointer& storage) override;
bool isMipAvailable(uint16 level, uint8 face = 0) const override; bool isMipAvailable(uint16 level, uint8 face = 0) const override;

View file

@ -141,8 +141,13 @@ namespace ktx {
} }
currentDestPtr += destHeader->bytesOfKeyValueData; currentDestPtr += destHeader->bytesOfKeyValueData;
for (int i = 0; i < descriptors.size(); ++i) { for (size_t i = 0; i < descriptors.size(); ++i) {
*currentDestPtr = descriptors[i]._imageSize; auto ptr = reinterpret_cast<uint32_t*>(currentDestPtr);
*ptr = descriptors[i]._imageSize;
ptr++;
for (size_t k = 0; k < descriptors[i]._imageSize/4; k++) {
*(ptr + k) = 0xFFFF0000;
}
currentDestPtr += descriptors[i]._imageSize + sizeof(uint32_t); currentDestPtr += descriptors[i]._imageSize + sizeof(uint32_t);
} }

View file

@ -393,7 +393,8 @@ void NetworkTexture::loadContent(const QByteArray& content) {
auto numMipsToGet = glm::min(numMips, 6); auto numMipsToGet = glm::min(numMips, 6);
auto sizeOfTopMips = 0; auto sizeOfTopMips = 0;
for (int i = 0; i < numMipsToGet; ++i) { for (int i = 0; i < numMipsToGet; ++i) {
auto& img = desc.images[i]; auto mipLevel = numMips - 1 - i;
auto& img = desc.images[mipLevel];
sizeOfTopMips += img._imageSize; sizeOfTopMips += img._imageSize;
} }
_requestByteRange.fromInclusive = length - sizeOfTopMips; _requestByteRange.fromInclusive = length - sizeOfTopMips;

View file

@ -665,6 +665,7 @@ void Resource::makeRequest() {
} }
PROFILE_ASYNC_BEGIN(resource, "Resource:" + getType(), QString::number(_requestID), { { "url", _url.toString() }, { "activeURL", _activeUrl.toString() } }); PROFILE_ASYNC_BEGIN(resource, "Resource:" + getType(), QString::number(_requestID), { { "url", _url.toString() }, { "activeURL", _activeUrl.toString() } });
qDebug() << "Making request to " << _url << " for byte range " << _requestByteRange.fromInclusive << "-" << _requestByteRange.toExclusive;
_request = ResourceManager::createResourceRequest(this, _activeUrl); _request = ResourceManager::createResourceRequest(this, _activeUrl);