Sponza рэндэрлэх оролдлого 2, Материал бүтцээ тодорхойлох

3D объектийг рэндэрлэхийн тулд тэр объектийн оптик шинж чанаруудыг нь тодорхойлж өгөх хэрэгтэй.

Объект бүрийн хувьд ерөнхий хэрэглэгдэх материалийнх нь шинж чанаруудыг нь бүлэглээд ерөнхий нэг бүтцэд оруулая. Үүнийг мэдээж C++ классаараа тодорхойлж өгөх боломжтой.

Материал :
    - diffuse color, opaque : vec4
    - ambient color : vec3
    - specular color : vec3
    - emissive color : vec3
    - diffuseTexture : integer
    - normalTexture : integer
    - specularTexture : integer
    - shininess


#include <GL/glew.h>
#include <glm/glm.hpp>

class Material {
public:
    Material();
    ~Material();

    glm::vec4 getDiffuseColor() {
        return this->diffuseColor;
    };

    void setDiffuseColor(glm::vec4 color) {
        this->diffuseColor = color;
    }

    glm::vec3 getAmbientColor() {
        return this->ambientColor;
    }

    void setAmbientColor(glm::vec3 color) {
        this->ambientColor = color;
    }

    glm::vec3 getSpecularColor() {
        return this->specularColor;
    }

    void setSpecularColor(glm::vec3 color) {
        this->specularColor = color;
    }

    glm::vec3 getEmissiveColor() {
        return this->emissiveColor;
    }

    void setEmissiveColor(glm::vec3 color) {
        this->emissiveColor = color;
    }

    float getShininess() {
        return this->shininess;
    }

    void setShininess(float shininess) {
        this->shininess = shininess;
    }

    GLuint getDiffuseTextureID() {
        return this->diffuseTextureID;
    }

    void setDiffuseTextureID(GLuint diffuseTextureID) {
        this->diffuseTextureID = diffuseTextureID;
    }

    GLuint getNormalTextureID() {
        return this->normalTextureID;
    }

    void setNormalTextureID(GLuint normalTextureID) {
        this->normalTextureID = normalTextureID;
    }

    GLuint getSpecularTextureID() {
        return this->specularTextureID;
    }

    void setSpecularTextureID(GLuint specularTextureID) {
        this->specularTextureID = specularTextureID;
    }


private:
    glm::vec4 diffuseColor;
    glm::vec3 ambientColor;
    glm::vec3 specularColor;
    glm::vec3 emissiveColor;
    float shininess;
    GLuint diffuseTextureID;
    GLuint normalTextureID;
    GLuint specularTextureID;
};

Popular posts from this blog

Apache Spark + Cassandra. Hello World