Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Renderer.h"
- Renderer::Renderer(){
- GX2InitSampler(&this->sampler, GX2_TEX_CLAMP_MODE_WRAP, GX2_TEX_XY_FILTER_MODE_POINT);
- GX2InitSamplerLOD(&this->sampler, 0, 13, -3.0f);
- }
- Renderer::~Renderer(){
- for(int i = 0; i < this->vertexBuffers.size(); i++) GX2RDestroyBufferEx(this->vertexBuffers.at(i), (GX2RResourceFlags) 0);
- for(int i = 0; i < this->texCoordBuffers.size(); i++) GX2RDestroyBufferEx(this->texCoordBuffers.at(i), (GX2RResourceFlags) 0);
- for(int i = 0; i < this->colorBuffers.size(); i++) GX2RDestroyBufferEx(this->colorBuffers.at(i), (GX2RResourceFlags) 0);
- for(int i = 0; i < this->shaderGroups.size(); i++) WHBGfxFreeShaderGroup(this->shaderGroups.at(i));
- }
- int Renderer::loadVertexData(float vertexData[]){
- GX2RBuffer positionBuffer;
- void *buffer = NULL;
- positionBuffer.flags = (GX2RResourceFlags)(GX2R_RESOURCE_BIND_VERTEX_BUFFER |
- GX2R_RESOURCE_USAGE_CPU_READ |
- GX2R_RESOURCE_USAGE_CPU_WRITE |
- GX2R_RESOURCE_USAGE_GPU_READ);
- positionBuffer.elemSize = 3 * sizeof(float);
- positionBuffer.elemCount = (sizeof(vertexData) / sizeof(float)) / 3;
- GX2RCreateBuffer(&positionBuffer);
- buffer = GX2RLockBufferEx(&positionBuffer, (GX2RResourceFlags)0);
- memcpy(buffer, vertexData, positionBuffer.elemSize * positionBuffer.elemCount);
- GX2RUnlockBufferEx(&positionBuffer, (GX2RResourceFlags)0);
- this->vertexBuffers.push_back(&positionBuffer);
- }
- int Renderer::loadTexCoordData(float texCoordData[]){
- GX2RBuffer texCoordBuffer;
- void *buffer = NULL;
- texCoordBuffer.flags = (GX2RResourceFlags)(GX2R_RESOURCE_BIND_VERTEX_BUFFER |
- GX2R_RESOURCE_USAGE_CPU_READ |
- GX2R_RESOURCE_USAGE_CPU_WRITE |
- GX2R_RESOURCE_USAGE_GPU_READ);
- texCoordBuffer.elemSize = 2 * sizeof(float);
- texCoordBuffer.elemCount = (sizeof(texCoordData) / sizeof(float)) / 2;
- GX2RCreateBuffer(&texCoordBuffer);
- buffer = GX2RLockBufferEx(&texCoordBuffer, (GX2RResourceFlags)0);
- memcpy(buffer, texCoordData, texCoordBuffer.elemSize * texCoordBuffer.elemCount);
- GX2RUnlockBufferEx(&texCoordBuffer, (GX2RResourceFlags)0);
- this->texCoordBuffers.push_back(&texCoordBuffer);
- }
- int Renderer::loadShaderGroup(char* filePath){
- }
- void Renderer::setActiveVertexBuffer(int vertexBufferID){
- this->activeVertexBuffer = vertexBufferID;
- }
- void Renderer::setActiveTexCoordBuffer(int texCoordBufferID){
- this->activeTexCoordBuffer = texCoordBufferID;
- }
- void Renderer::setActiveShader(int shaderID){
- this->activeShaderGroup = shaderID;
- }
- void Renderer::prepare3DTV(){
- this->projection = glm::perspective(degToRad(45.0f), (float)1280 / (float)720, NEAR_PLANE, FAR_PLANE);
- }
- void Renderer::prepare2DTV(){
- this->projection = glm::ortho(0.0f, 1280.0f, 720.0f, 0.0f, -1.0f, 1.0f);
- }
- void Renderer::prepare3DDRC(){
- this->projection = glm::perspective(degToRad(45.0f), (float)854 / (float)480, NEAR_PLANE, FAR_PLANE);
- }
- void Renderer::prepare2DDRC(){
- this->projection = glm::ortho(0.0f, 854.0f, 480.0f, 0.0f, -1.0f, 1.0f);
- }
- void Renderer::startTV(){
- WHBGfxBeginRenderTV();
- }
- void Renderer::startDRC(){
- WHBGfxBeginRenderDRC();
- }
- void Renderer::endTV(){
- WHBGfxFinishRenderTV();
- }
- void Renderer::endDRC(){
- WHBGfxFinishRenderDRC();
- }
- void Renderer::renderTexture(){
- WHBGfxClearColor(0.5f, 0.5f, 1.0f, 1.0f);
- GX2SetCullOnlyControl(GX2_FRONT_FACE_CCW, FALSE, TRUE);
- GX2SetColorControl(GX2_LOGIC_OP_COPY, 0xFF, FALSE, TRUE);
- GX2SetBlendControl(GX2_RENDER_TARGET_0, GX2_BLEND_MODE_SRC_ALPHA, GX2_BLEND_MODE_INV_SRC_ALPHA, GX2_BLEND_COMBINE_MODE_ADD, TRUE, GX2_BLEND_MODE_ONE, GX2_BLEND_MODE_INV_SRC_ALPHA, GX2_BLEND_COMBINE_MODE_ADD);
- GX2SetPixelSampler(&this->sampler, 0);
- GX2SetVertexUniformReg(this->shaderGroups.at(activeShaderGroup)->vertexShader->uniformVars[0].offset, 16, (uint32_t *)&mvpDRC[0][0]);
- GX2DrawEx(GX2_PRIMITIVE_MODE_TRIANGLES, (64*64)*6, 0, 1);
- }
- void Renderer::renderLines(){
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement