语法错误: 缺少“;”(在“}”的前面)
语法错误:“.”
意外的标记位于“;”之前
"coordinate": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"texture": 不是 "TextureColorVertex" 的成员
"texture": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
“<”: 有符号/无符号不匹配
"coordinate": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"texture": 不是 "TextureColorVertex" 的成员
"texture": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"texture": 不是 "TextureColorVertex" 的成员
"texture": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
“<”: 有符号/无符号不匹配
"coordinate": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"texture": 不是 "TextureColorVertex" 的成员
"texture": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
语法错误:“.”
语法错误: 缺少“;”(在“}”的前面)
意外的标记位于“;”之前
初始值设定项太多
语法错误:“.”
语法错误: 缺少“;”(在“}”的前面)
意外的标记位于“;”之前
“<”: 有符号/无符号不匹配
"coordinate": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"texture": 不是 "TextureColorVertex" 的成员
"texture": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"texture": 不是 "TextureColorVertex" 的成员
"texture": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
“p”: 未声明的标识符
“p”: 未声明的标识符
“p”: 未声明的标识符
“p”: 未声明的标识符
“p”: 未声明的标识符
“p”: 未声明的标识符
"texture": 不是 "TextureColorVertex" 的成员
"texture": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
“<”: 有符号/无符号不匹配
"coordinate": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"texture": 不是 "TextureColorVertex" 的成员
"texture": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"texture": 不是 "TextureColorVertex" 的成员
"texture": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
“<”: 有符号/无符号不匹配
"coordinate": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"texture": 不是 "TextureColorVertex" 的成员
"texture": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
语法错误:“.”
语法错误: 缺少“;”(在“}”的前面)
意外的标记位于“;”之前
语法错误:“.”
语法错误: 缺少“;”(在“}”的前面)
意外的标记位于“;”之前
语法错误:“.”
语法错误: 缺少“;”(在“}”的前面)
意外的标记位于“;”之前
语法错误:“.”
语法错误: 缺少“;”(在“}”的前面)
意外的标记位于“;”之前
"coordinate": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"color": 不是 "TextureColorVertex" 的成员
"normal": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"normal": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"normal": 不是 "TextureColorVertex" 的成员
"coordinate": 不是 "TextureColorVertex" 的成员
"texture": 不是 "TextureColorVertex" 的成员
"texture": 不是 "TextureColorVertex" 的成员#pragma once
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>
#include <string>
#include "Shader.h"
typedef struct
{
//glm::vec3 normal;
//glm::vec3 coordinate;
//glm::vec3 color;
//glm::vec2 texture;
.coordinate = glm::vec3(0.5f, 0.5f, 0.5f),
.color = glm::vec3(0.0f, 0.0f, 1.0f),
.texture = glm::vec2(1.0f, 0.0f),
.normal = glm::vec3(0.0f, 1.0f, 0.0f)
} TextureColorVertex;
typedef struct
{
GLuint latSegments;
GLuint longSegments;
GLfloat radius;
GLfloat height;
}DataParam;
class Object
{
public:
Object(std::string vs, std::string fs, std::string texName = "");
virtual ~Object();
protected:
Shader* shader;
TextureColorVertex* vertices;
GLushort * indices;
GLuint indexCount;
GLint verticesSize;
GLuint indexSize;
GLuint texture;
GLuint VBO, VAO, EBO;
protected:
glm::mat4 model;
float rotationSpeed;
float revolutionSpeed;
float rotationAngle;
float revolutionAngle;
glm::vec3 translation;
GLsizei stride;
void createBuffer(GLsizei stride,bool createEBO = false, GLenum ussage = GL_STATIC_DRAW);
public:
void createShader(const char* vs, const char* fs);
virtual void initData(DataParam *param = nullptr) = 0;
void setTexture(std::string texName);
void render(glm::mat4& view, glm::mat4& projection);
virtual void update(float dt) {}
virtual void renderObject() = 0;
virtual void updateDataBuffer();
};
#include "Cone.h"
Cone::Cone(std::string vs, std::string fs, std::string texName) :Object(vs, fs, texName)
{
}
Cone::~Cone()
{
}
void Cone::initData(DataParam *param)
{
dataParam = *param;
GLfloat radius = dataParam.radius;
GLuint longSegments = dataParam.longSegments;
//GLuint latSegments = param->latSegments;
GLfloat height = dataParam.height;
//float fPhi = glm::pi<float>() / latSegments; //纬度上角度差:Phi
float fTheta = (glm::pi<float>() * 2.0f) / longSegments; //经度上角度差:Theta
//生成顶点数据
verticesSize = 2 * (longSegments + 2);// *sizeof(TextureColorVertex);
vertices = new TextureColorVertex[verticesSize];
verticesSize *= sizeof(TextureColorVertex);
int start = 0;
//生成侧面数据
vertices[start].coordinate.x = 0;
vertices[start].coordinate.y = height / 2.0f;
vertices[start].coordinate.z = 0;
vertices[start].texture.s = 0.5;
vertices[start].texture.t = 0.5;
vertices[start].color.r = vertices[start].color.g = vertices[start].color.b = 1.0f;
++start;
for (int i = start; i < start + longSegments + 1; i++) {
vertices[i].coordinate.x = radius * cos(glm::pi<float>() * 2 - i * fTheta);
vertices[i].coordinate.y = -height / 2.0f;
vertices[i].coordinate.z = radius * sin(glm::pi<float>() * 2 - i * fTheta);
vertices[i].texture.s = 0.5f + 0.5f * cos(glm::pi<float>() * 2 - i * fTheta);
vertices[i].texture.t = 0.5f + 0.5f * sin(glm::pi<float>() * 2 - i * fTheta);
vertices[i].color.r = vertices[i].color.g = vertices[i].color.b = 1.0f;
}
start += longSegments + 1;
//生成下底顶点数据
vertices[start].coordinate.x = 0;
vertices[start].coordinate.y = -height / 2.0f;
vertices[start].coordinate.z = 0.0f;
vertices[start].texture.s = 0.5f;
vertices[start].texture.t = 0.5f;
vertices[start].color.r = vertices[start].color.g = vertices[start].color.b = 1.0f;
++start;
for (int i = start; i < start + longSegments + 1; i++) {
vertices[i].coordinate.x = radius * cos(i * fTheta);
vertices[i].coordinate.y = -height / 2.0f;
vertices[i].coordinate.z = radius * sin(i * fTheta);
vertices[i].texture.s = 0.5f + 0.5f * cos(i * fTheta);
vertices[i].texture.t = 0.5f + 0.5f * sin(i * fTheta);
vertices[i].color.r = vertices[i].color.g = vertices[i].color.b = 1.0f;
}
createBuffer(sizeof(TextureColorVertex));
delete[]vertices;
revolutionAngle = 0.0f;
rotationAngle = 0.0f;
revolutionSpeed = 0.1f;
rotationSpeed = 0.5f;
}
void Cone::renderObject()
{
glBindVertexArray(VAO);
GLint first = 0;
glDrawArrays(GL_TRIANGLE_FAN, first, dataParam.longSegments + 2);
first += dataParam.longSegments + 2;
glDrawArrays(GL_TRIANGLE_FAN, first, dataParam.longSegments + 2);
}
void Cone::update(float dt)
{
revolutionAngle += revolutionSpeed;
rotationAngle += rotationSpeed;
model = glm::mat4(1.0f);
model = glm::rotate(model, glm::radians(revolutionAngle), glm::vec3(0.0f, 0.0f, 1.0f));
model = glm::translate(model, glm::vec3(0.0f, 4.0f, 0.0f));
model = glm::rotate(model, glm::radians(rotationAngle), glm::vec3(1.0f, 0.0f, 0.0f));
model = glm::scale(model, glm::vec3(1.0f, 1.0f, 1.0f));
}
不要动cone.cpp