Added the trunk/branches/tags directories at repository root, and moved previous root into trunk/
git-svn-id: https://sfml.svn.sourceforge.net/svnroot/sfml/trunk@1002 4e206d99-4929-0410-ac5d-dfc041789085
This commit is contained in:
commit
2f524481c1
974 changed files with 295448 additions and 0 deletions
18
samples/X11/Makefile
Normal file
18
samples/X11/Makefile
Normal file
|
@ -0,0 +1,18 @@
|
|||
EXEC = X11
|
||||
OBJ = X11.o
|
||||
|
||||
all: $(EXEC)
|
||||
|
||||
X11: $(OBJ)
|
||||
$(CC) $(LDFLAGS) -o $(EXECPATH)/$@ $(OBJ) -lsfml-window -lsfml-system -lGLU -lGL -lX11
|
||||
|
||||
%.o: %.cpp
|
||||
$(CC) -o $@ -c $< $(CFLAGS)
|
||||
|
||||
.PHONY: clean mrproper
|
||||
|
||||
clean:
|
||||
@rm -rf *.o
|
||||
|
||||
mrproper: clean
|
||||
@rm -rf $(EXECPATH)/$(EXEC)
|
212
samples/X11/X11.cpp
Normal file
212
samples/X11/X11.cpp
Normal file
|
@ -0,0 +1,212 @@
|
|||
|
||||
////////////////////////////////////////////////////////////
|
||||
// Headers
|
||||
////////////////////////////////////////////////////////////
|
||||
#include <SFML/Window.hpp>
|
||||
#include <X11/Xlib.h>
|
||||
#include <GL/gl.h>
|
||||
#include <GL/glu.h>
|
||||
#include <iostream>
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// Initialize OpenGL states into the specified view
|
||||
///
|
||||
/// \param Window : Target window to initialize
|
||||
///
|
||||
////////////////////////////////////////////////////////////
|
||||
void Initialize(sf::Window& Window)
|
||||
{
|
||||
// Activate the window
|
||||
Window.SetActive();
|
||||
|
||||
// Setup OpenGL states
|
||||
// Set color and depth clear value
|
||||
glClearDepth(1.f);
|
||||
glClearColor(0.f, 0.5f, 0.5f, 0.f);
|
||||
|
||||
// Enable Z-buffer read and write
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
glDepthMask(GL_TRUE);
|
||||
|
||||
// Setup a perspective projection
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glLoadIdentity();
|
||||
gluPerspective(90.f, 1.f, 1.f, 500.f);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// Draw the OpenGL scene (a rotating cube) into
|
||||
/// the specified view
|
||||
///
|
||||
/// \param Window : Target window for rendering
|
||||
/// \param ElapsedTime : Time elapsed since the last draw
|
||||
///
|
||||
////////////////////////////////////////////////////////////
|
||||
void Draw(sf::Window& Window, float ElapsedTime)
|
||||
{
|
||||
// Activate the window
|
||||
Window.SetActive();
|
||||
|
||||
// Clear color and depth buffers
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
// Apply some transformations
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glLoadIdentity();
|
||||
glTranslatef(0.f, 0.f, -200.f);
|
||||
glRotatef(ElapsedTime * 50, 1.f, 0.f, 0.f);
|
||||
glRotatef(ElapsedTime * 30, 0.f, 1.f, 0.f);
|
||||
glRotatef(ElapsedTime * 90, 0.f, 0.f, 1.f);
|
||||
|
||||
// Draw a cube
|
||||
glBegin(GL_QUADS);
|
||||
|
||||
glColor3f(1.f, 1.f, 0.f);
|
||||
glVertex3f(-50.f, -50.f, -50.f);
|
||||
glVertex3f(-50.f, 50.f, -50.f);
|
||||
glVertex3f( 50.f, 50.f, -50.f);
|
||||
glVertex3f( 50.f, -50.f, -50.f);
|
||||
|
||||
glColor3f(1.f, 1.f, 0.f);
|
||||
glVertex3f(-50.f, -50.f, 50.f);
|
||||
glVertex3f(-50.f, 50.f, 50.f);
|
||||
glVertex3f( 50.f, 50.f, 50.f);
|
||||
glVertex3f( 50.f, -50.f, 50.f);
|
||||
|
||||
glColor3f(0.f, 1.f, 1.f);
|
||||
glVertex3f(-50.f, -50.f, -50.f);
|
||||
glVertex3f(-50.f, 50.f, -50.f);
|
||||
glVertex3f(-50.f, 50.f, 50.f);
|
||||
glVertex3f(-50.f, -50.f, 50.f);
|
||||
|
||||
glColor3f(0.f, 1.f, 1.f);
|
||||
glVertex3f(50.f, -50.f, -50.f);
|
||||
glVertex3f(50.f, 50.f, -50.f);
|
||||
glVertex3f(50.f, 50.f, 50.f);
|
||||
glVertex3f(50.f, -50.f, 50.f);
|
||||
|
||||
glColor3f(1.f, 0.f, 1.f);
|
||||
glVertex3f(-50.f, -50.f, 50.f);
|
||||
glVertex3f(-50.f, -50.f, -50.f);
|
||||
glVertex3f( 50.f, -50.f, -50.f);
|
||||
glVertex3f( 50.f, -50.f, 50.f);
|
||||
|
||||
glColor3f(1.f, 0.f, 1.f);
|
||||
glVertex3f(-50.f, 50.f, 50.f);
|
||||
glVertex3f(-50.f, 50.f, -50.f);
|
||||
glVertex3f( 50.f, 50.f, -50.f);
|
||||
glVertex3f( 50.f, 50.f, 50.f);
|
||||
|
||||
glEnd();
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// Entry point of application
|
||||
///
|
||||
/// \return Error code
|
||||
///
|
||||
////////////////////////////////////////////////////////////
|
||||
int main()
|
||||
{
|
||||
// Open a connection with the X server
|
||||
Display* Disp = XOpenDisplay(NULL);
|
||||
if (!Disp)
|
||||
return EXIT_FAILURE;
|
||||
|
||||
// Setup OpenGL states
|
||||
// Set color and depth clear value
|
||||
glClearDepth(1.f);
|
||||
glClearColor(0.f, 0.5f, 0.5f, 0.f);
|
||||
|
||||
// Enable Z-buffer read and write
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
glDepthMask(GL_TRUE);
|
||||
|
||||
// Setup a perspective projection
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glLoadIdentity();
|
||||
gluPerspective(90.f, 1.f, 1.f, 500.f);
|
||||
// Get the default screen
|
||||
int Screen = DefaultScreen(Disp);
|
||||
|
||||
// Let's create the main window
|
||||
XSetWindowAttributes Attributes;
|
||||
Attributes.background_pixel = BlackPixel(Disp, Screen);
|
||||
Attributes.event_mask = KeyPressMask;
|
||||
Window Win = XCreateWindow(Disp, RootWindow(Disp, Screen),
|
||||
0, 0, 650, 330, 0,
|
||||
DefaultDepth(Disp, Screen),
|
||||
InputOutput,
|
||||
DefaultVisual(Disp, Screen),
|
||||
CWBackPixel | CWEventMask, &Attributes);
|
||||
if (!Win)
|
||||
return EXIT_FAILURE;
|
||||
|
||||
// Set the window's name
|
||||
XStoreName(Disp, Win, "SFML Window");
|
||||
|
||||
// Let's create the windows which will serve as containers for our SFML views
|
||||
Window View1 = XCreateWindow(Disp, Win,
|
||||
10, 10, 310, 310, 0,
|
||||
DefaultDepth(Disp, Screen),
|
||||
InputOutput,
|
||||
DefaultVisual(Disp, Screen),
|
||||
0, NULL);
|
||||
Window View2 = XCreateWindow(Disp, Win,
|
||||
330, 10, 310, 310, 0,
|
||||
DefaultDepth(Disp, Screen),
|
||||
InputOutput,
|
||||
DefaultVisual(Disp, Screen),
|
||||
0, NULL);
|
||||
|
||||
// Show our windows
|
||||
XMapWindow(Disp, Win);
|
||||
XFlush(Disp);
|
||||
|
||||
// Create our SFML views
|
||||
sf::Window SFMLView1(View1);
|
||||
sf::Window SFMLView2(View2);
|
||||
|
||||
// Create a clock for measuring elapsed time
|
||||
sf::Clock Clock;
|
||||
|
||||
// Initialize our views
|
||||
Initialize(SFMLView1);
|
||||
Initialize(SFMLView2);
|
||||
|
||||
// Start the event loop
|
||||
bool IsRunning = true;
|
||||
while (IsRunning)
|
||||
{
|
||||
while (XPending(Disp))
|
||||
{
|
||||
// Get the next pending event
|
||||
XEvent Event;
|
||||
XNextEvent(Disp, &Event);
|
||||
|
||||
// Process it
|
||||
switch (Event.type)
|
||||
{
|
||||
// Any key is pressed : quit
|
||||
case KeyPress :
|
||||
IsRunning = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Draw something into our views
|
||||
Draw(SFMLView1, Clock.GetElapsedTime());
|
||||
Draw(SFMLView2, Clock.GetElapsedTime() * 0.3f);
|
||||
|
||||
// Display the views on screen
|
||||
SFMLView1.Display();
|
||||
SFMLView2.Display();
|
||||
}
|
||||
|
||||
// Close the display
|
||||
XCloseDisplay(Disp);
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue