本文整理汇总了C++中Tetris::render方法的典型用法代码示例。如果您正苦于以下问题:C++ Tetris::render方法的具体用法?C++ Tetris::render怎么用?C++ Tetris::render使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Tetris
的用法示例。
在下文中一共展示了Tetris::render方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(int argc, char *argv[]) {
ALLEGRO_DISPLAY *display;
unsigned int ticks = 0;
if (!al_init()) {
std::cerr << "[ERROR] Error initializing Allegro" << std::endl;
}
display = al_create_display(SCREEN_WIDTH, SCREEN_HEIGHT);
if (!display) {
std::cerr << "[ERROR] Error creating Allegro display" << std::endl;
}
al_install_audio();
al_install_keyboard();
al_init_primitives_addon();
al_init_acodec_addon();
al_init_font_addon();
al_init_ttf_addon();
al_init_image_addon();
al_reserve_samples(10);
srand(time(NULL));
ALLEGRO_TIMER *timer = al_create_timer(1.0 / FPS);
ALLEGRO_EVENT_QUEUE *timerQueue = al_create_event_queue();
al_register_event_source(timerQueue, al_get_timer_event_source(timer));
al_start_timer(timer);
Tetris *game = new Tetris(SCREEN_WIDTH, SCREEN_HEIGHT, timerQueue);
while (game->update(ticks)) {
game->render();
++ticks;
}
delete game;
al_destroy_display(display);
al_destroy_timer(timer);
al_destroy_event_queue(timerQueue);
return 0;
}
示例2: start
//.........这里部分代码省略.........
break;
case SDLK_DOWN:
moveDown = false;
break;
case SDLK_LEFT:
moveLeft = false;
break;
case SDLK_RIGHT:
moveRight = false;
break;
default:
break;
}
}
tetris.handleInput(e);
}
tetris.update();
if (moveRight) {
testValX += 0.1f;
}
if (moveLeft) {
testValX -= 0.1f;
}
if (moveUp) {
testValY += 0.1f;
}
if (moveDown) {
testValY -= 0.1f;
}
prevAngle = angle;
angle += 0.1f;
if (angle > 360.f) {
angle = 0.f;
}
next_tick += SKIP_TICKS;
loops++;
}
interpolation = float(SDL_GetTicks() + SKIP_TICKS - next_tick) / float(SKIP_TICKS);
Projection = glm::perspective(glm::radians(45.0f), _screen.x / _screen.y, 0.1f, 100.0f);
if (projectionMod) {
Projection = glm::ortho(-10.0f * (_screen.x / _screen.y), 10.0f * (_screen.x / _screen.y), -10.0f, 10.0f, 0.0f, 100.0f);
}
View = glm::lookAt(
glm::vec3(0, 0, 4),
glm::vec3(0, 0, 0),
glm::vec3(0, 1, 0)
);
Translate = glm::translate(glm::mat4(1.0f), glm::vec3(testValX, testValY, 0.0f));
Scale = glm::scale(glm::mat4(1.0f), glm::vec3(0.5));
Rotate = glm::rotate(glm::mat4(1.0f), glm::mix(prevAngle, angle, interpolation), glm::vec3(1.0f, 1.0f, 0.0f));
Model = Translate * Rotate * Scale;
MVP = Projection * View * Model;
//Clear the screen
glClear ( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glUseProgram(_programID);
glUniformMatrix4fv(MatrixID, 1, GL_FALSE, glm::value_ptr(MVP));
glBindBuffer(GL_ARRAY_BUFFER, _VBO);
glEnableVertexAttribArray(_vertexPos2DLocation);
glVertexAttribPointer(_vertexPos2DLocation, 3, GL_FLOAT, GL_FALSE, 0, 0);
glBindBuffer(GL_ARRAY_BUFFER, _cVBO);
glEnableVertexAttribArray(_vertexColor);
glVertexAttribPointer(_vertexColor, 3, GL_FLOAT, GL_FALSE, 0, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _IBO);
glDrawElements(GL_TRIANGLES, 36, GL_UNSIGNED_INT, NULL);
glDisableVertexAttribArray(_vertexPos2DLocation);
glDisableVertexAttribArray(_vertexColor);
glUseProgram(NULL);
tetris.render(interpolation);
//Render FPS
fps_ticks = SDL_GetTicks();
SDL_GL_SwapWindow(_window);
}
}